{"version":3,"file":"klock-root-klock-js-legacy.js","sources":["../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/Date.kt","src/kotlin/util/Preconditions.kt","js/src/kotlin/math.kt","src/kotlin/collections/Collections.kt","common/src/generated/_Collections.kt","src/kotlin/comparisons/Comparisons.kt","src/kotlin/text/StringBuilder.kt","src/kotlin/util/Standard.kt","runtime/arrayUtils.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/DateException.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/DateFormat.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/TimeSpan.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/DateTime.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/DateTimeRange.kt","src/kotlin/util/Lazy.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/MonthSpan.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/internal/GenericBinarySearch.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/DateTimeRangeSet.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/internal/FastForEach.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/DateTimeSpan.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/DateTimeSpanFormat.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/DateTimeTz.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/DayOfWeek.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/Frequency.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/ISO8601.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/KlockLocale.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/KlockLocaleContext.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/Measure.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/Month.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/NumberOfTimes.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/PatternDateFormat.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/internal/MicroStrReader.kt","js/src/kotlin/text/string.kt","src/kotlin/collections/Maps.kt","src/kotlin/text/Strings.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/PatternTimeFormat.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/PerformanceCounter.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/Sleep.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/Stopwatch.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/Time.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/TimeFormat.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/TimeProvider.kt","src/kotlin/collections/MutableCollections.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/TimezoneNames.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/TimezoneOffset.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/Year.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/YearMonth.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/annotations/KlockExperimental.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/benchmark/Benchmark.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/hr/HRTimeProvider.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/hr/HRTimeSpan.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/internal/ChainComparison.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/internal/MapExt.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/internal/NiceStr.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/internal/SpinLock.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/internal/TimeZoneParser.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/internal/internal.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/ExtendedTimezoneNames.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/de.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/es.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/fr.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/it.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/ja.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/ko.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/nb.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/nl.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/pt.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/ru.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/sv.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/uk.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/locale/zh.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WDate.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WDateTime.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WDateTimeSpan.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WDateTimeTz.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WDayOfWeek.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WMonth.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WMonthSpan.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WTime.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WTimeSpan.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WTimezoneOffset.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WYear.kt","../../../../../klock/src/commonMain/kotlin/com/soywiz/klock/wrapped/WYearMonth.kt","../../../../../klock/src/jsMain/kotlin/com/soywiz/klock/internal/AtomicsPlat.kt","../../../../../klock/src/jsMain/kotlin/com/soywiz/klock/internal/KlockInternal.kt","../../../../../klock/src/jsMain/kotlin/com/soywiz/klock/js/DateExt.kt","src/kotlin/jsTypeOf.kt"],"sourcesContent":[null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"PreconditionsKt\")\n\npackage kotlin\n\nimport kotlin.contracts.contract\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n require(value) { \"Failed requirement.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failRequireWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun require(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalArgumentException] if the [value] is null. Otherwise returns the not null value.\n */\n@kotlin.internal.InlineOnly\npublic inline fun requireNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return requireNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalArgumentException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failRequireNotNullWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun requireNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalArgumentException(message.toString())\n } else {\n return value\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean): Unit {\n contract {\n returns() implies value\n }\n check(value) { \"Check failed.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is false.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun check(value: Boolean, lazyMessage: () -> Any): Unit {\n contract {\n returns() implies value\n }\n if (!value) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n }\n}\n\n/**\n * Throws an [IllegalStateException] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun checkNotNull(value: T?): T {\n contract {\n returns() implies (value != null)\n }\n return checkNotNull(value) { \"Required value was null.\" }\n}\n\n/**\n * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is null. Otherwise\n * returns the not null value.\n *\n * @sample samples.misc.Preconditions.failCheckWithLazyMessage\n */\n@kotlin.internal.InlineOnly\npublic inline fun checkNotNull(value: T?, lazyMessage: () -> Any): T {\n contract {\n returns() implies (value != null)\n }\n\n if (value == null) {\n val message = lazyMessage()\n throw IllegalStateException(message.toString())\n } else {\n return value\n }\n}\n\n\n/**\n * Throws an [IllegalStateException] with the given [message].\n *\n * @sample samples.misc.Preconditions.failWithError\n */\n@kotlin.internal.InlineOnly\npublic inline fun error(message: Any): Nothing = throw IllegalStateException(message.toString())\n","/*\n * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\npackage kotlin.math\n\n\nimport kotlin.internal.InlineOnly\nimport kotlin.js.JsMath as nativeMath\n\n\n// region ================ Double Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sin(x: Double): Double = nativeMath.sin(x)\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cos(x: Double): Double = nativeMath.cos(x)\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tan(x: Double): Double = nativeMath.tan(x)\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asin(x: Double): Double = nativeMath.asin(x)\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acos(x: Double): Double = nativeMath.acos(x)\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan(x: Double): Double = nativeMath.atan(x)\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan2(y: Double, x: Double): Double = nativeMath.atan2(y, x)\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sinh(x: Double): Double = nativeMath.sinh(x)\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cosh(x: Double): Double = nativeMath.cosh(x)\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tanh(x: Double): Double = nativeMath.tanh(x)\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asinh(x: Double): Double = nativeMath.asinh(x)\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acosh(x: Double): Double = nativeMath.acosh(x)\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atanh(x: Double): Double = nativeMath.atanh(x)\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun hypot(x: Double, y: Double): Double = nativeMath.hypot(x, y)\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sqrt(x: Double): Double = nativeMath.sqrt(x)\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun exp(x: Double): Double = nativeMath.exp(x)\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun expm1(x: Double): Double = nativeMath.expm1(x)\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\npublic actual fun log(x: Double, base: Double): Double {\n if (base <= 0.0 || base == 1.0) return Double.NaN\n return nativeMath.log(x) / nativeMath.log(base)\n}\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln(x: Double): Double = nativeMath.log(x)\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log10(x: Double): Double = nativeMath.log10(x)\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log2(x: Double): Double = nativeMath.log2(x)\n\n/**\n * Computes `ln(x + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln1p(x: Double): Double = nativeMath.log1p(x)\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest double value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ceil(x: Double): Double = nativeMath.ceil(x)\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest double value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun floor(x: Double): Double = nativeMath.floor(x)\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun truncate(x: Double): Double = nativeMath.trunc(x)\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun round(x: Double): Double {\n if (x % 0.5 != 0.0) {\n return nativeMath.round(x)\n }\n val floor = floor(x)\n return if (floor % 2 == 0.0) floor else ceil(x)\n}\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Double]\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun abs(x: Double): Double = nativeMath.abs(x)\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sign(x: Double): Double = nativeMath.sign(x)\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Double, b: Double): Double = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Double, b: Double): Double = nativeMath.max(a, b)\n\n// extensions\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.pow(x: Double): Double = nativeMath.pow(this, x)\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.pow(n: Int): Double = nativeMath.pow(this, n.toDouble())\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Double.absoluteValue: Double get() = nativeMath.abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Double.sign: Double get() = nativeMath.sign(this)\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Double.withSign(sign: Int): Double = this.withSign(sign.toDouble())\n\n/**\n * Returns the ulp (unit in the last place) of this value.\n *\n * An ulp is a positive distance between this value and the next nearest [Double] value larger in magnitude.\n *\n * Special Cases:\n * - `NaN.ulp` is `NaN`\n * - `x.ulp` is `+Inf` when `x` is `+Inf` or `-Inf`\n * - `0.0.ulp` is `Double.MIN_VALUE`\n */\n@SinceKotlin(\"1.2\")\npublic actual val Double.ulp: Double get() = when {\n this < 0 -> (-this).ulp\n this.isNaN() || this == Double.POSITIVE_INFINITY -> this\n this == Double.MAX_VALUE -> this - this.nextDown()\n else -> this.nextUp() - this\n}\n\n/**\n * Returns the [Double] value nearest to this value in direction of positive infinity.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextUp(): Double = when {\n this.isNaN() || this == Double.POSITIVE_INFINITY -> this\n this == 0.0 -> Double.MIN_VALUE\n else -> Double.fromBits(this.toRawBits() + if (this > 0) 1 else -1)\n}\n\n/**\n * Returns the [Double] value nearest to this value in direction of negative infinity.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextDown(): Double = when {\n this.isNaN() || this == Double.NEGATIVE_INFINITY -> this\n this == 0.0 -> -Double.MIN_VALUE\n else -> Double.fromBits(this.toRawBits() + if (this > 0) -1 else 1)\n}\n\n\n/**\n * Returns the [Double] value nearest to this value in direction from this value towards the value [to].\n *\n * Special cases:\n * - `x.nextTowards(y)` is `NaN` if either `x` or `y` are `NaN`\n * - `x.nextTowards(x) == x`\n *\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.nextTowards(to: Double): Double = when {\n this.isNaN() || to.isNaN() -> Double.NaN\n to == this -> to\n to > this -> this.nextUp()\n else /* to < this */ -> this.nextDown()\n}\n\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.roundToInt(): Int = when {\n isNaN() -> throw IllegalArgumentException(\"Cannot round NaN value.\")\n this > Int.MAX_VALUE -> Int.MAX_VALUE\n this < Int.MIN_VALUE -> Int.MIN_VALUE\n else -> nativeMath.round(this).toInt()\n}\n\n/**\n * Rounds this [Double] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Double.roundToLong(): Long = when {\n isNaN() -> throw IllegalArgumentException(\"Cannot round NaN value.\")\n this > Long.MAX_VALUE -> Long.MAX_VALUE\n this < Long.MIN_VALUE -> Long.MIN_VALUE\n else -> nativeMath.round(this).toLong()\n}\n\n// endregion\n\n\n\n// region ================ Float Math ========================================\n\n/** Computes the sine of the angle [x] given in radians.\n *\n * Special cases:\n * - `sin(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sin(x: Float): Float = nativeMath.sin(x.toDouble()).toFloat()\n\n/** Computes the cosine of the angle [x] given in radians.\n *\n * Special cases:\n * - `cos(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cos(x: Float): Float = nativeMath.cos(x.toDouble()).toFloat()\n\n/** Computes the tangent of the angle [x] given in radians.\n *\n * Special cases:\n * - `tan(NaN|+Inf|-Inf)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tan(x: Float): Float = nativeMath.tan(x.toDouble()).toFloat()\n\n/**\n * Computes the arc sine of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `asin(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asin(x: Float): Float = nativeMath.asin(x.toDouble()).toFloat()\n\n/**\n * Computes the arc cosine of the value [x];\n * the returned value is an angle in the range from `0.0` to `PI` radians.\n *\n * Special cases:\n * - `acos(x)` is `NaN`, when `abs(x) > 1` or x is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acos(x: Float): Float = nativeMath.acos(x.toDouble()).toFloat()\n\n/**\n * Computes the arc tangent of the value [x];\n * the returned value is an angle in the range from `-PI/2` to `PI/2` radians.\n *\n * Special cases:\n * - `atan(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan(x: Float): Float = nativeMath.atan(x.toDouble()).toFloat()\n\n/**\n * Returns the angle `theta` of the polar coordinates `(r, theta)` that correspond\n * to the rectangular coordinates `(x, y)` by computing the arc tangent of the value [y] / [x];\n * the returned value is an angle in the range from `-PI` to `PI` radians.\n *\n * Special cases:\n * - `atan2(0.0, 0.0)` is `0.0`\n * - `atan2(0.0, x)` is `0.0` for `x > 0` and `PI` for `x < 0`\n * - `atan2(-0.0, x)` is `-0.0` for 'x > 0` and `-PI` for `x < 0`\n * - `atan2(y, +Inf)` is `0.0` for `0 < y < +Inf` and `-0.0` for '-Inf < y < 0`\n * - `atan2(y, -Inf)` is `PI` for `0 < y < +Inf` and `-PI` for `-Inf < y < 0`\n * - `atan2(y, 0.0)` is `PI/2` for `y > 0` and `-PI/2` for `y < 0`\n * - `atan2(+Inf, x)` is `PI/2` for finite `x`y\n * - `atan2(-Inf, x)` is `-PI/2` for finite `x`\n * - `atan2(NaN, x)` and `atan2(y, NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atan2(y: Float, x: Float): Float = nativeMath.atan2(y.toDouble(), x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic sine of the value [x].\n *\n * Special cases:\n * - `sinh(NaN)` is `NaN`\n * - `sinh(+Inf)` is `+Inf`\n * - `sinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sinh(x: Float): Float = nativeMath.sinh(x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic cosine of the value [x].\n *\n * Special cases:\n * - `cosh(NaN)` is `NaN`\n * - `cosh(+Inf|-Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun cosh(x: Float): Float = nativeMath.cosh(x.toDouble()).toFloat()\n\n/**\n * Computes the hyperbolic tangent of the value [x].\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(+Inf)` is `1.0`\n * - `tanh(-Inf)` is `-1.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun tanh(x: Float): Float = nativeMath.tanh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic sine of the value [x].\n *\n * The returned value is `y` such that `sinh(y) == x`.\n *\n * Special cases:\n * - `asinh(NaN)` is `NaN`\n * - `asinh(+Inf)` is `+Inf`\n * - `asinh(-Inf)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun asinh(x: Float): Float = nativeMath.asinh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic cosine of the value [x].\n *\n * The returned value is positive `y` such that `cosh(y) == x`.\n *\n * Special cases:\n * - `acosh(NaN)` is `NaN`\n * - `acosh(x)` is `NaN` when `x < 1`\n * - `acosh(+Inf)` is `+Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun acosh(x: Float): Float = nativeMath.acosh(x.toDouble()).toFloat()\n\n/**\n * Computes the inverse hyperbolic tangent of the value [x].\n *\n * The returned value is `y` such that `tanh(y) == x`.\n *\n * Special cases:\n * - `tanh(NaN)` is `NaN`\n * - `tanh(x)` is `NaN` when `x > 1` or `x < -1`\n * - `tanh(1.0)` is `+Inf`\n * - `tanh(-1.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun atanh(x: Float): Float = nativeMath.atanh(x.toDouble()).toFloat()\n\n/**\n * Computes `sqrt(x^2 + y^2)` without intermediate overflow or underflow.\n *\n * Special cases:\n * - returns `+Inf` if any of arguments is infinite\n * - returns `NaN` if any of arguments is `NaN` and the other is not infinite\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun hypot(x: Float, y: Float): Float = nativeMath.hypot(x.toDouble(), y.toDouble()).toFloat()\n\n/**\n * Computes the positive square root of the value [x].\n *\n * Special cases:\n * - `sqrt(x)` is `NaN` when `x < 0` or `x` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sqrt(x: Float): Float = nativeMath.sqrt(x.toDouble()).toFloat()\n\n/**\n * Computes Euler's number `e` raised to the power of the value [x].\n *\n * Special cases:\n * - `exp(NaN)` is `NaN`\n * - `exp(+Inf)` is `+Inf`\n * - `exp(-Inf)` is `0.0`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun exp(x: Float): Float = nativeMath.exp(x.toDouble()).toFloat()\n\n/**\n * Computes `exp(x) - 1`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `expm1(NaN)` is `NaN`\n * - `expm1(+Inf)` is `+Inf`\n * - `expm1(-Inf)` is `-1.0`\n *\n * @see [exp] function.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun expm1(x: Float): Float = nativeMath.expm1(x.toDouble()).toFloat()\n\n/**\n * Computes the logarithm of the value [x] to the given [base].\n *\n * Special cases:\n * - `log(x, b)` is `NaN` if either `x` or `b` are `NaN`\n * - `log(x, b)` is `NaN` when `x < 0` or `b <= 0` or `b == 1.0`\n * - `log(+Inf, +Inf)` is `NaN`\n * - `log(+Inf, b)` is `+Inf` for `b > 1` and `-Inf` for `b < 1`\n * - `log(0.0, b)` is `-Inf` for `b > 1` and `+Inf` for `b > 1`\n *\n * See also logarithm functions for common fixed bases: [ln], [log10] and [log2].\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log(x: Float, base: Float): Float = log(x.toDouble(), base.toDouble()).toFloat()\n\n/**\n * Computes the natural logarithm (base `E`) of the value [x].\n *\n * Special cases:\n * - `ln(NaN)` is `NaN`\n * - `ln(x)` is `NaN` when `x < 0.0`\n * - `ln(+Inf)` is `+Inf`\n * - `ln(0.0)` is `-Inf`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln(x: Float): Float = nativeMath.log(x.toDouble()).toFloat()\n\n/**\n * Computes the common logarithm (base 10) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log10(x: Float): Float = nativeMath.log10(x.toDouble()).toFloat()\n\n/**\n * Computes the binary logarithm (base 2) of the value [x].\n *\n * @see [ln] function for special cases.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun log2(x: Float): Float = nativeMath.log2(x.toDouble()).toFloat()\n\n/**\n * Computes `ln(a + 1)`.\n *\n * This function can be implemented to produce more precise result for [x] near zero.\n *\n * Special cases:\n * - `ln1p(NaN)` is `NaN`\n * - `ln1p(x)` is `NaN` where `x < -1.0`\n * - `ln1p(-1.0)` is `-Inf`\n * - `ln1p(+Inf)` is `+Inf`\n *\n * @see [ln] function\n * @see [expm1] function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ln1p(x: Float): Float = nativeMath.log1p(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards positive infinity.\n\n * @return the smallest Float value that is greater than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `ceil(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun ceil(x: Float): Float = nativeMath.ceil(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards negative infinity.\n\n * @return the largest Float value that is smaller than or equal to the given value [x] and is a mathematical integer.\n *\n * Special cases:\n * - `floor(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun floor(x: Float): Float = nativeMath.floor(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] to an integer towards zero.\n *\n * @return the value [x] having its fractional part truncated.\n *\n * Special cases:\n * - `truncate(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun truncate(x: Float): Float = truncate(x.toDouble()).toFloat()\n\n/**\n * Rounds the given value [x] towards the closest integer with ties rounded towards even integer.\n *\n * Special cases:\n * - `round(x)` is `x` where `x` is `NaN` or `+Inf` or `-Inf` or already a mathematical integer.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun round(x: Float): Float = round(x.toDouble()).toFloat()\n\n\n/**\n * Returns the absolute value of the given value [x].\n *\n * Special cases:\n * - `abs(NaN)` is `NaN`\n *\n * @see absoluteValue extension property for [Float]\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun abs(x: Float): Float = nativeMath.abs(x.toDouble()).toFloat()\n\n/**\n * Returns the sign of the given value [x]:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `sign(NaN)` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun sign(x: Float): Float = nativeMath.sign(x.toDouble()).toFloat()\n\n\n\n/**\n * Returns the smaller of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Float, b: Float): Float = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n *\n * If either value is `NaN`, then the result is `NaN`.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Float, b: Float): Float = nativeMath.max(a, b)\n\n// extensions\n\n\n/**\n * Raises this value to the power [x].\n *\n * Special cases:\n * - `b.pow(0.0)` is `1.0`\n * - `b.pow(1.0) == b`\n * - `b.pow(NaN)` is `NaN`\n * - `NaN.pow(x)` is `NaN` for `x != 0.0`\n * - `b.pow(Inf)` is `NaN` for `abs(b) == 1.0`\n * - `b.pow(x)` is `NaN` for `b < 0` and `x` is finite and not an integer\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.pow(x: Float): Float = nativeMath.pow(this.toDouble(), x.toDouble()).toFloat()\n\n/**\n * Raises this value to the integer power [n].\n *\n * See the other overload of [pow] for details.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.pow(n: Int): Float = nativeMath.pow(this.toDouble(), n.toDouble()).toFloat()\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `NaN.absoluteValue` is `NaN`\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Float.absoluteValue: Float get() = nativeMath.abs(this.toDouble()).toFloat()\n\n/**\n * Returns the sign of this value:\n * - `-1.0` if the value is negative,\n * - zero if the value is zero,\n * - `1.0` if the value is positive\n *\n * Special case:\n * - `NaN.sign` is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Float.sign: Float get() = nativeMath.sign(this.toDouble()).toFloat()\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n *\n * If [sign] is `NaN` the sign of the result is undefined.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.withSign(sign: Float): Float = this.toDouble().withSign(sign.toDouble()).toFloat()\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.withSign(sign: Int): Float = this.toDouble().withSign(sign.toDouble()).toFloat()\n\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Int].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToInt() == Int.MAX_VALUE` when `x > Int.MAX_VALUE`\n * - `x.roundToInt() == Int.MIN_VALUE` when `x < Int.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.roundToInt(): Int = toDouble().roundToInt()\n\n/**\n * Rounds this [Float] value to the nearest integer and converts the result to [Long].\n * Ties are rounded towards positive infinity.\n *\n * Special cases:\n * - `x.roundToLong() == Long.MAX_VALUE` when `x > Long.MAX_VALUE`\n * - `x.roundToLong() == Long.MIN_VALUE` when `x < Long.MIN_VALUE`\n *\n * @throws IllegalArgumentException when this value is `NaN`\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun Float.roundToLong(): Long = toDouble().roundToLong()\n\n\n// endregion\n\n// region ================ Integer Math ========================================\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Int.MIN_VALUE)` is `Int.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Int]\n */\n// TODO: remove manual 'or' when KT-19290 is fixed\n@SinceKotlin(\"1.2\")\npublic actual fun abs(n: Int): Int = if (n < 0) (-n or 0) else n\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun min(a: Int, b: Int): Int = nativeMath.min(a, b)\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline fun max(a: Int, b: Int): Int = nativeMath.max(a, b)\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Int.MIN_VALUE.absoluteValue` is `Int.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Int.absoluteValue: Int get() = abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic actual val Int.sign: Int get() = when {\n this < 0 -> -1\n this > 0 -> 1\n else -> 0\n}\n\n\n\n/**\n * Returns the absolute value of the given value [n].\n *\n * Special cases:\n * - `abs(Long.MIN_VALUE)` is `Long.MIN_VALUE` due to an overflow\n *\n * @see absoluteValue extension property for [Long]\n */\n@SinceKotlin(\"1.2\")\npublic actual fun abs(n: Long): Long = if (n < 0) -n else n\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun min(a: Long, b: Long): Long = if (a <= b) a else b\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\n@Suppress(\"NOTHING_TO_INLINE\")\npublic actual inline fun max(a: Long, b: Long): Long = if (a >= b) a else b\n\n/**\n * Returns the absolute value of this value.\n *\n * Special cases:\n * - `Long.MIN_VALUE.absoluteValue` is `Long.MIN_VALUE` due to an overflow\n *\n * @see abs function\n */\n@SinceKotlin(\"1.2\")\n@InlineOnly\npublic actual inline val Long.absoluteValue: Long get() = abs(this)\n\n/**\n * Returns the sign of this value:\n * - `-1` if the value is negative,\n * - `0` if the value is zero,\n * - `1` if the value is positive\n */\n@SinceKotlin(\"1.2\")\npublic actual val Long.sign: Int get() = when {\n this < 0 -> -1\n this > 0 -> 1\n else -> 0\n}\n\n\n// endregion\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n@file:OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\nimport kotlin.random.Random\n\ninternal object EmptyIterator : ListIterator {\n override fun hasNext(): Boolean = false\n override fun hasPrevious(): Boolean = false\n override fun nextIndex(): Int = 0\n override fun previousIndex(): Int = -1\n override fun next(): Nothing = throw NoSuchElementException()\n override fun previous(): Nothing = throw NoSuchElementException()\n}\n\ninternal object EmptyList : List, Serializable, RandomAccess {\n private const val serialVersionUID: Long = -7390468764508069838L\n\n override fun equals(other: Any?): Boolean = other is List<*> && other.isEmpty()\n override fun hashCode(): Int = 1\n override fun toString(): String = \"[]\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection): Boolean = elements.isEmpty()\n\n override fun get(index: Int): Nothing = throw IndexOutOfBoundsException(\"Empty list doesn't contain element at index $index.\")\n override fun indexOf(element: Nothing): Int = -1\n override fun lastIndexOf(element: Nothing): Int = -1\n\n override fun iterator(): Iterator = EmptyIterator\n override fun listIterator(): ListIterator = EmptyIterator\n override fun listIterator(index: Int): ListIterator {\n if (index != 0) throw IndexOutOfBoundsException(\"Index: $index\")\n return EmptyIterator\n }\n\n override fun subList(fromIndex: Int, toIndex: Int): List {\n if (fromIndex == 0 && toIndex == 0) return this\n throw IndexOutOfBoundsException(\"fromIndex: $fromIndex, toIndex: $toIndex\")\n }\n\n private fun readResolve(): Any = EmptyList\n}\n\ninternal fun Array.asCollection(): Collection = ArrayAsCollection(this, isVarargs = false)\n\nprivate class ArrayAsCollection(val values: Array, val isVarargs: Boolean) : Collection {\n override val size: Int get() = values.size\n override fun isEmpty(): Boolean = values.isEmpty()\n override fun contains(element: T): Boolean = values.contains(element)\n override fun containsAll(elements: Collection): Boolean = elements.all { contains(it) }\n override fun iterator(): Iterator = values.iterator()\n // override hidden toArray implementation to prevent copying of values array\n public fun toArray(): Array = values.copyToArrayOfAny(isVarargs)\n}\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\npublic fun emptyList(): List = EmptyList\n\n/**\n * Returns a new read-only list of given elements. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.readOnlyList\n */\npublic fun listOf(vararg elements: T): List = if (elements.size > 0) elements.asList() else emptyList()\n\n/**\n * Returns an empty read-only list. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.emptyReadOnlyList\n */\n@kotlin.internal.InlineOnly\npublic inline fun listOf(): List = emptyList()\n\n/**\n * Returns an empty new [MutableList].\n * @sample samples.collections.Collections.Lists.emptyMutableList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableListOf(): MutableList = ArrayList()\n\n/**\n * Returns an empty new [ArrayList].\n * @sample samples.collections.Collections.Lists.emptyArrayList\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun arrayListOf(): ArrayList = ArrayList()\n\n/**\n * Returns a new [MutableList] with the given elements.\n * @sample samples.collections.Collections.Lists.mutableList\n */\npublic fun mutableListOf(vararg elements: T): MutableList =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new [ArrayList] with the given elements.\n * @sample samples.collections.Collections.Lists.arrayList\n */\npublic fun arrayListOf(vararg elements: T): ArrayList =\n if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))\n\n/**\n * Returns a new read-only list either of single given element, if it is not null, or empty list if the element is null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun listOfNotNull(element: T?): List = if (element != null) listOf(element) else emptyList()\n\n/**\n * Returns a new read-only list only of those given elements, that are not null. The returned list is serializable (JVM).\n * @sample samples.collections.Collections.Lists.listOfNotNull\n */\npublic fun listOfNotNull(vararg elements: T?): List = elements.filterNotNull()\n\n/**\n * Creates a new read-only list with the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each list element sequentially starting from the first one.\n * It should return the value for a list element given its index.\n *\n * @sample samples.collections.Collections.Lists.readOnlyListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun List(size: Int, init: (index: Int) -> T): List = MutableList(size, init)\n\n/**\n * Creates a new mutable list with the specified [size], where each element is calculated by calling the specified\n * [init] function.\n *\n * The function [init] is called for each list element sequentially starting from the first one.\n * It should return the value for a list element given its index.\n *\n * @sample samples.collections.Collections.Lists.mutableListFromInitializer\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun MutableList(size: Int, init: (index: Int) -> T): MutableList {\n val list = ArrayList(size)\n repeat(size) { index -> list.add(init(index)) }\n return list\n}\n\n/**\n * Builds a new read-only [List] by populating a [MutableList] using the given [builderAction]\n * and returning a read-only list with the same elements.\n *\n * The list passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * @sample samples.collections.Builders.Lists.buildListSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildList(@BuilderInference builderAction: MutableList.() -> Unit): List {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return buildListInternal(builderAction)\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal expect inline fun buildListInternal(builderAction: MutableList.() -> Unit): List\n\n/**\n * Builds a new read-only [List] by populating a [MutableList] using the given [builderAction]\n * and returning a read-only list with the same elements.\n *\n * The list passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * [capacity] is used to hint the expected number of elements added in the [builderAction].\n *\n * @throws IllegalArgumentException if the given [capacity] is negative.\n *\n * @sample samples.collections.Builders.Lists.buildListSampleWithCapacity\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildList(capacity: Int, @BuilderInference builderAction: MutableList.() -> Unit): List {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return buildListInternal(capacity, builderAction)\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal expect inline fun buildListInternal(capacity: Int, builderAction: MutableList.() -> Unit): List\n\n/**\n * Returns an [IntRange] of the valid indices for this collection.\n * @sample samples.collections.Collections.Collections.indicesOfCollection\n */\npublic val Collection<*>.indices: IntRange\n get() = 0..size - 1\n\n/**\n * Returns the index of the last item in the list or -1 if the list is empty.\n *\n * @sample samples.collections.Collections.Lists.lastIndexOfList\n */\npublic val List.lastIndex: Int\n get() = this.size - 1\n\n/**\n * Returns `true` if the collection is not empty.\n * @sample samples.collections.Collections.Collections.collectionIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable collection is either null or empty.\n * @sample samples.collections.Collections.Collections.collectionIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Collection?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.isEmpty()\n}\n\n/**\n * Returns this Collection if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Collections.collectionOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection?.orEmpty(): Collection = this ?: emptyList()\n\n/**\n * Returns this List if it's not `null` and the empty list otherwise.\n * @sample samples.collections.Collections.Lists.listOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun List?.orEmpty(): List = this ?: emptyList()\n\n/**\n * Returns this collection if it's not empty\n * or the result of calling [defaultValue] function if the collection is empty.\n *\n * @sample samples.collections.Collections.Collections.collectionIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : Collection<*>, C : R =\n if (isEmpty()) defaultValue() else this\n\n\n/**\n * Checks if all elements in the specified collection are contained in this collection.\n *\n * Allows to overcome type-safety restriction of `containsAll` that requires to pass a collection of type `Collection`.\n * @sample samples.collections.Collections.Collections.collectionContainsAll\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> Collection.containsAll(elements: Collection): Boolean = this.containsAll(elements)\n\n\n/**\n * Returns a new list with the elements of this list randomly shuffled\n * using the specified [random] instance as the source of randomness.\n */\n@SinceKotlin(\"1.3\")\npublic fun Iterable.shuffled(random: Random): List = toMutableList().apply { shuffle(random) }\n\n\ninternal fun List.optimizeReadOnlyList() = when (size) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of its elements,\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchOnComparable\n * @sample samples.collections.Collections.Lists.binarySearchWithBoundaries\n */\npublic fun > List.binarySearch(element: T?, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = compareValues(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for the provided [element] using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the specified [comparator],\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements equal to the specified [element], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted according to the specified [comparator].\n * @sample samples.collections.Collections.Lists.binarySearchWithComparator\n */\npublic fun List.binarySearch(element: T, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparator.compare(midVal, element)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Searches this list or its range for an element having the key returned by the specified [selector] function\n * equal to the provided [key] value using the binary search algorithm.\n * The list is expected to be sorted into ascending order according to the Comparable natural ordering of keys of its elements.\n * otherwise the result is undefined.\n *\n * If the list contains multiple elements with the specified [key], there is no guarantee which one will be found.\n *\n * `null` value is considered to be less than any non-null value.\n *\n * @return the index of the element with the specified [key], if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchByKey\n */\npublic inline fun > List.binarySearchBy(\n key: K?,\n fromIndex: Int = 0,\n toIndex: Int = size,\n crossinline selector: (T) -> K?\n): Int =\n binarySearch(fromIndex, toIndex) { compareValues(selector(it), key) }\n\n// do not introduce this overload --- too rare\n//public fun List.binarySearchBy(key: K, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size(), selector: (T) -> K): Int =\n// binarySearch(fromIndex, toIndex) { comparator.compare(selector(it), key) }\n\n\n/**\n * Searches this list or its range for an element for which the given [comparison] function returns zero using the binary search algorithm.\n *\n * The list is expected to be sorted so that the signs of the [comparison] function's return values ascend on the list elements,\n * i.e. negative values come before zero and zeroes come before positive values.\n * Otherwise, the result is undefined.\n *\n * If the list contains multiple elements for which [comparison] returns zero, there is no guarantee which one will be found.\n *\n * @param comparison function that returns zero when called on the list element being searched.\n * On the elements coming before the target element, the function must return negative values;\n * on the elements coming after the target element, the function must return positive values.\n *\n * @return the index of the found element, if it is contained in the list within the specified range;\n * otherwise, the inverted insertion point `(-insertion point - 1)`.\n * The insertion point is defined as the index at which the element should be inserted,\n * so that the list (or the specified subrange of list) still remains sorted.\n * @sample samples.collections.Collections.Lists.binarySearchWithComparisonFunction\n */\npublic fun List.binarySearch(fromIndex: Int = 0, toIndex: Int = size, comparison: (T) -> Int): Int {\n rangeCheck(size, fromIndex, toIndex)\n\n var low = fromIndex\n var high = toIndex - 1\n\n while (low <= high) {\n val mid = (low + high).ushr(1) // safe from overflows\n val midVal = get(mid)\n val cmp = comparison(midVal)\n\n if (cmp < 0)\n low = mid + 1\n else if (cmp > 0)\n high = mid - 1\n else\n return mid // key found\n }\n return -(low + 1) // key not found\n}\n\n/**\n * Checks that `from` and `to` are in\n * the range of [0..size] and throws an appropriate exception, if they aren't.\n */\nprivate fun rangeCheck(size: Int, fromIndex: Int, toIndex: Int) {\n when {\n fromIndex > toIndex -> throw IllegalArgumentException(\"fromIndex ($fromIndex) is greater than toIndex ($toIndex).\")\n fromIndex < 0 -> throw IndexOutOfBoundsException(\"fromIndex ($fromIndex) is less than zero.\")\n toIndex > size -> throw IndexOutOfBoundsException(\"toIndex ($toIndex) is greater than size ($size).\")\n }\n}\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkIndexOverflow(index: Int): Int\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal expect fun checkCountOverflow(count: Int): Int\n\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwIndexOverflow() { throw ArithmeticException(\"Index overflow has happened.\") }\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun throwCountOverflow() { throw ArithmeticException(\"Count overflow has happened.\") }\n\n","/*\n * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n//\n// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt\n// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib\n//\n\nimport kotlin.random.*\nimport kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Returns 1st *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 1.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component1(): T {\n return get(0)\n}\n\n/**\n * Returns 2nd *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 2.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component2(): T {\n return get(1)\n}\n\n/**\n * Returns 3rd *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 3.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component3(): T {\n return get(2)\n}\n\n/**\n * Returns 4th *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 4.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component4(): T {\n return get(3)\n}\n\n/**\n * Returns 5th *element* from the list.\n * \n * Throws an [IndexOutOfBoundsException] if the size of this list is less than 5.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun List.component5(): T {\n return get(4)\n}\n\n/**\n * Returns `true` if [element] is found in the collection.\n */\npublic operator fun <@kotlin.internal.OnlyInputTypes T> Iterable.contains(element: T): Boolean {\n if (this is Collection)\n return contains(element)\n return indexOf(element) >= 0\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic fun Iterable.elementAt(index: Int): T {\n if (this is List)\n return get(index)\n return elementAtOrElse(index) { throw IndexOutOfBoundsException(\"Collection doesn't contain element at index $index.\") }\n}\n\n/**\n * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAt(index: Int): T {\n return get(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\npublic fun Iterable.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n if (this is List)\n return this.getOrElse(index, defaultValue)\n if (index < 0)\n return defaultValue(index)\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this collection.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\npublic fun Iterable.elementAtOrNull(index: Int): T? {\n if (this is List)\n return this.getOrNull(index)\n if (index < 0)\n return null\n val iterator = iterator()\n var count = 0\n while (iterator.hasNext()) {\n val element = iterator.next()\n if (index == count++)\n return element\n }\n return null\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.elementAtOrNull(index: Int): T? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.find(predicate: (T) -> Boolean): T? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.findLast(predicate: (T) -> Boolean): T? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the collection is empty.\n */\npublic fun Iterable.first(): T {\n when (this) {\n is List -> return this.first()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the list is empty.\n */\npublic fun List.first(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\npublic inline fun Iterable.first(predicate: (T) -> Boolean): T {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n}\n\n/**\n * Returns the first non-null value produced by [transform] function being applied to elements of this collection in iteration order,\n * or throws [NoSuchElementException] if no non-null value was produced.\n * \n * @sample samples.collections.Collections.Transformations.firstNotNullOf\n */\n@SinceKotlin(\"1.5\")\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.firstNotNullOf(transform: (T) -> R?): R {\n return firstNotNullOfOrNull(transform) ?: throw NoSuchElementException(\"No element of the collection was transformed to a non-null value.\")\n}\n\n/**\n * Returns the first non-null value produced by [transform] function being applied to elements of this collection in iteration order,\n * or `null` if no non-null value was produced.\n * \n * @sample samples.collections.Collections.Transformations.firstNotNullOf\n */\n@SinceKotlin(\"1.5\")\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.firstNotNullOfOrNull(transform: (T) -> R?): R? {\n for (element in this) {\n val result = transform(element)\n if (result != null) {\n return result\n }\n }\n return null\n}\n\n/**\n * Returns the first element, or `null` if the collection is empty.\n */\npublic fun Iterable.firstOrNull(): T? {\n when (this) {\n is List -> {\n if (isEmpty())\n return null\n else\n return this[0]\n }\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n return iterator.next()\n }\n }\n}\n\n/**\n * Returns the first element, or `null` if the list is empty.\n */\npublic fun List.firstOrNull(): T? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element matching the given [predicate], or `null` if element was not found.\n */\npublic inline fun Iterable.firstOrNull(predicate: (T) -> Boolean): T? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this list.\n */\n@kotlin.internal.InlineOnly\npublic inline fun List.getOrElse(index: Int, defaultValue: (Int) -> T): T {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun List.getOrNull(index: Int): T? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns first index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable.indexOf(element: T): Int {\n if (this is List) return this.indexOf(element)\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns first index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List.indexOf(element: T): Int {\n return indexOf(element)\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun Iterable.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the first element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun List.indexOfFirst(predicate: (T) -> Boolean): Int {\n var index = 0\n for (item in this) {\n if (predicate(item))\n return index\n index++\n }\n return -1\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the collection does not contain such element.\n */\npublic inline fun Iterable.indexOfLast(predicate: (T) -> Boolean): Int {\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (predicate(item))\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns index of the last element matching the given [predicate], or -1 if the list does not contain such element.\n */\npublic inline fun List.indexOfLast(predicate: (T) -> Boolean): Int {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n if (predicate(iterator.previous())) {\n return iterator.nextIndex()\n }\n }\n return -1\n}\n\n/**\n * Returns the last element.\n * \n * @throws NoSuchElementException if the collection is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun Iterable.last(): T {\n when (this) {\n is List -> return this.last()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element.\n * \n * @throws NoSuchElementException if the list is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun List.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"List is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun Iterable.last(predicate: (T) -> Boolean): T {\n var last: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n last = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return last as T\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun List.last(predicate: (T) -> Boolean): T {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n throw NoSuchElementException(\"List contains no element matching the predicate.\")\n}\n\n/**\n * Returns last index of [element], or -1 if the collection does not contain element.\n */\npublic fun <@kotlin.internal.OnlyInputTypes T> Iterable.lastIndexOf(element: T): Int {\n if (this is List) return this.lastIndexOf(element)\n var lastIndex = -1\n var index = 0\n for (item in this) {\n checkIndexOverflow(index)\n if (element == item)\n lastIndex = index\n index++\n }\n return lastIndex\n}\n\n/**\n * Returns last index of [element], or -1 if the list does not contain element.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\npublic fun <@kotlin.internal.OnlyInputTypes T> List.lastIndexOf(element: T): Int {\n return lastIndexOf(element)\n}\n\n/**\n * Returns the last element, or `null` if the collection is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun Iterable.lastOrNull(): T? {\n when (this) {\n is List -> return if (isEmpty()) null else this[size - 1]\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n var last = iterator.next()\n while (iterator.hasNext())\n last = iterator.next()\n return last\n }\n }\n}\n\n/**\n * Returns the last element, or `null` if the list is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun List.lastOrNull(): T? {\n return if (isEmpty()) null else this[size - 1]\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun Iterable.lastOrNull(predicate: (T) -> Boolean): T? {\n var last: T? = null\n for (element in this) {\n if (predicate(element)) {\n last = element\n }\n }\n return last\n}\n\n/**\n * Returns the last element matching the given [predicate], or `null` if no such element was found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun List.lastOrNull(predicate: (T) -> Boolean): T? {\n val iterator = this.listIterator(size)\n while (iterator.hasPrevious()) {\n val element = iterator.previous()\n if (predicate(element)) return element\n }\n return null\n}\n\n/**\n * Returns a random element from this collection.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Collection.random(): T {\n return random(Random)\n}\n\n/**\n * Returns a random element from this collection using the specified source of randomness.\n * \n * @throws NoSuchElementException if this collection is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Collection.random(random: Random): T {\n if (isEmpty())\n throw NoSuchElementException(\"Collection is empty.\")\n return elementAt(random.nextInt(size))\n}\n\n/**\n * Returns a random element from this collection, or `null` if this collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun Collection.randomOrNull(): T? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this collection using the specified source of randomness, or `null` if this collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun Collection.randomOrNull(random: Random): T? {\n if (isEmpty())\n return null\n return elementAt(random.nextInt(size))\n}\n\n/**\n * Returns the single element, or throws an exception if the collection is empty or has more than one element.\n */\npublic fun Iterable.single(): T {\n when (this) {\n is List -> return this.single()\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n throw NoSuchElementException(\"Collection is empty.\")\n val single = iterator.next()\n if (iterator.hasNext())\n throw IllegalArgumentException(\"Collection has more than one element.\")\n return single\n }\n }\n}\n\n/**\n * Returns the single element, or throws an exception if the list is empty or has more than one element.\n */\npublic fun List.single(): T {\n return when (size) {\n 0 -> throw NoSuchElementException(\"List is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"List has more than one element.\")\n }\n}\n\n/**\n * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element.\n */\npublic inline fun Iterable.single(predicate: (T) -> Boolean): T {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) throw IllegalArgumentException(\"Collection contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Collection contains no element matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as T\n}\n\n/**\n * Returns single element, or `null` if the collection is empty or has more than one element.\n */\npublic fun Iterable.singleOrNull(): T? {\n when (this) {\n is List -> return if (size == 1) this[0] else null\n else -> {\n val iterator = iterator()\n if (!iterator.hasNext())\n return null\n val single = iterator.next()\n if (iterator.hasNext())\n return null\n return single\n }\n }\n}\n\n/**\n * Returns single element, or `null` if the list is empty or has more than one element.\n */\npublic fun List.singleOrNull(): T? {\n return if (size == 1) this[0] else null\n}\n\n/**\n * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found.\n */\npublic inline fun Iterable.singleOrNull(predicate: (T) -> Boolean): T? {\n var single: T? = null\n var found = false\n for (element in this) {\n if (predicate(element)) {\n if (found) return null\n single = element\n found = true\n }\n }\n if (!found) return null\n return single\n}\n\n/**\n * Returns a list containing all elements except first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun Iterable.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return toList()\n val list: ArrayList\n if (this is Collection<*>) {\n val resultSize = size - n\n if (resultSize <= 0)\n return emptyList()\n if (resultSize == 1)\n return listOf(last())\n list = ArrayList(resultSize)\n if (this is List) {\n if (this is RandomAccess) {\n for (index in n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(n))\n list.add(item)\n }\n return list\n }\n }\n else {\n list = ArrayList()\n }\n var count = 0\n for (item in this) {\n if (count >= n) list.add(item) else ++count\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing all elements except last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic fun List.dropLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n return take((size - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a list containing all elements except last elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun List.dropLastWhile(predicate: (T) -> Boolean): List {\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n return take(iterator.nextIndex() + 1)\n }\n }\n }\n return emptyList()\n}\n\n/**\n * Returns a list containing all elements except first elements that satisfy the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.drop\n */\npublic inline fun Iterable.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\n for (item in this)\n if (yielding)\n list.add(item)\n else if (!predicate(item)) {\n list.add(item)\n yielding = true\n }\n return list\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun Iterable.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun Iterable.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), predicate)\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of an element and the element itself\n * and returns the result of predicate evaluation on the element.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun > Iterable.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.add(element)\n }\n return destination\n}\n\n/**\n * Returns a list containing all elements that are instances of specified type parameter R.\n * \n * @sample samples.collections.Collections.Filtering.filterIsInstance\n */\npublic inline fun Iterable<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\n}\n\n/**\n * Appends all elements that are instances of specified type parameter R to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterIsInstanceTo\n */\npublic inline fun > Iterable<*>.filterIsInstanceTo(destination: C): C {\n for (element in this) if (element is R) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing all elements not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\npublic inline fun Iterable.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing all elements that are not `null`.\n * \n * @sample samples.collections.Collections.Filtering.filterNotNull\n */\npublic fun Iterable.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\n}\n\n/**\n * Appends all elements that are not `null` to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterNotNullTo\n */\npublic fun , T : Any> Iterable.filterNotNullTo(destination: C): C {\n for (element in this) if (element != null) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun > Iterable.filterNotTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Appends all elements matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun > Iterable.filterTo(destination: C, predicate: (T) -> Boolean): C {\n for (element in this) if (predicate(element)) destination.add(element)\n return destination\n}\n\n/**\n * Returns a list containing elements at indices in the specified [indices] range.\n */\npublic fun List.slice(indices: IntRange): List {\n if (indices.isEmpty()) return listOf()\n return this.subList(indices.start, indices.endInclusive + 1).toList()\n}\n\n/**\n * Returns a list containing elements at specified [indices].\n */\npublic fun List.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(size)\n for (index in indices) {\n list.add(get(index))\n }\n return list\n}\n\n/**\n * Returns a list containing first [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun Iterable.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (this is Collection) {\n if (n >= size) return toList()\n if (n == 1) return listOf(first())\n }\n var count = 0\n val list = ArrayList(n)\n for (item in this) {\n list.add(item)\n if (++count == n)\n break\n }\n return list.optimizeReadOnlyList()\n}\n\n/**\n * Returns a list containing last [n] elements.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic fun List.takeLast(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n val size = size\n if (n >= size) return toList()\n if (n == 1) return listOf(last())\n val list = ArrayList(n)\n if (this is RandomAccess) {\n for (index in size - n until size)\n list.add(this[index])\n } else {\n for (item in listIterator(size - n))\n list.add(item)\n }\n return list\n}\n\n/**\n * Returns a list containing last elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun List.takeLastWhile(predicate: (T) -> Boolean): List {\n if (isEmpty())\n return emptyList()\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n if (!predicate(iterator.previous())) {\n iterator.next()\n val expectedSize = size - iterator.nextIndex()\n if (expectedSize == 0) return emptyList()\n return ArrayList(expectedSize).apply {\n while (iterator.hasNext())\n add(iterator.next())\n }\n }\n }\n return toList()\n}\n\n/**\n * Returns a list containing first elements satisfying the given [predicate].\n * \n * @sample samples.collections.Collections.Transformations.take\n */\npublic inline fun Iterable.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\n for (item in this) {\n if (!predicate(item))\n break\n list.add(item)\n }\n return list\n}\n\n/**\n * Reverses elements in the list in-place.\n */\npublic expect fun MutableList.reverse(): Unit\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun Iterable.reversed(): List {\n if (this is Collection && size <= 1) return toList()\n val list = toMutableList()\n list.reverse()\n return list\n}\n\n/**\n * Randomly shuffles elements in this list in-place using the specified [random] instance as the source of randomness.\n * \n * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n */\n@SinceKotlin(\"1.3\")\npublic fun MutableList.shuffle(random: Random): Unit {\n for (i in lastIndex downTo 1) {\n val j = random.nextInt(i + 1)\n this[j] = this.set(i, this[j])\n }\n}\n\n/**\n * Sorts elements in the list in-place according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > MutableList.sortBy(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareBy(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > MutableList.sortByDescending(crossinline selector: (T) -> R?): Unit {\n if (size > 1) sortWith(compareByDescending(selector))\n}\n\n/**\n * Sorts elements in the list in-place descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > MutableList.sortDescending(): Unit {\n sortWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Iterable.sorted(): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray>() as Array).apply { sort() }.asList()\n }\n return toMutableList().apply { sort() }\n}\n\n/**\n * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n * \n * @sample samples.collections.Collections.Sorting.sortedBy\n */\npublic inline fun > Iterable.sortedBy(crossinline selector: (T) -> R?): List {\n return sortedWith(compareBy(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic inline fun > Iterable.sortedByDescending(crossinline selector: (T) -> R?): List {\n return sortedWith(compareByDescending(selector))\n}\n\n/**\n * Returns a list of all elements sorted descending according to their natural sort order.\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun > Iterable.sortedDescending(): List {\n return sortedWith(reverseOrder())\n}\n\n/**\n * Returns a list of all elements sorted according to the specified [comparator].\n * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\npublic fun Iterable.sortedWith(comparator: Comparator): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray() as Array).apply { sortWith(comparator) }.asList()\n }\n return toMutableList().apply { sortWith(comparator) }\n}\n\n/**\n * Returns an array of Boolean containing all of the elements of this collection.\n */\npublic fun Collection.toBooleanArray(): BooleanArray {\n val result = BooleanArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Byte containing all of the elements of this collection.\n */\npublic fun Collection.toByteArray(): ByteArray {\n val result = ByteArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Char containing all of the elements of this collection.\n */\npublic fun Collection.toCharArray(): CharArray {\n val result = CharArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Double containing all of the elements of this collection.\n */\npublic fun Collection.toDoubleArray(): DoubleArray {\n val result = DoubleArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Float containing all of the elements of this collection.\n */\npublic fun Collection.toFloatArray(): FloatArray {\n val result = FloatArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Int containing all of the elements of this collection.\n */\npublic fun Collection.toIntArray(): IntArray {\n val result = IntArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Long containing all of the elements of this collection.\n */\npublic fun Collection.toLongArray(): LongArray {\n val result = LongArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns an array of Short containing all of the elements of this collection.\n */\npublic fun Collection.toShortArray(): ShortArray {\n val result = ShortArray(size)\n var index = 0\n for (element in this)\n result[index++] = element\n return result\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to elements of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associate\n */\npublic inline fun Iterable.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the elements from the given collection indexed by the key\n * returned from [keySelector] function applied to each element.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateBy\n */\npublic inline fun Iterable.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateByWithValueTransform\n */\npublic inline fun Iterable.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function applied to each element of the given collection\n * and value is the element itself.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateByTo\n */\npublic inline fun > Iterable.associateByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n destination.put(keySelector(element), element)\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs,\n * where key is provided by the [keySelector] function and\n * and value is provided by the [valueTransform] function applied to elements of the given collection.\n * \n * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateByToWithValueTransform\n */\npublic inline fun > Iterable.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n destination.put(keySelector(element), valueTransform(element))\n }\n return destination\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs\n * provided by [transform] function applied to each element of the given collection.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.collections.Collections.Transformations.associateTo\n */\npublic inline fun > Iterable.associateTo(destination: M, transform: (T) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are elements from the given collection and values are\n * produced by the [valueSelector] function applied to each element.\n * \n * If any two elements are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original collection.\n * \n * @sample samples.collections.Collections.Transformations.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun Iterable.associateWith(valueSelector: (K) -> V): Map {\n val result = LinkedHashMap(mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16))\n return associateWithTo(result, valueSelector)\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs for each element of the given collection,\n * where key is the element itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two elements are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.collections.Collections.Transformations.associateWithTo\n */\n@SinceKotlin(\"1.3\")\npublic inline fun > Iterable.associateWithTo(destination: M, valueSelector: (K) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\n}\n\n/**\n * Appends all elements to the given [destination] collection.\n */\npublic fun > Iterable.toCollection(destination: C): C {\n for (item in this) {\n destination.add(item)\n }\n return destination\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun Iterable.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(collectionSizeOrDefault(12))))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Iterable.toList(): List {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyList()\n 1 -> listOf(if (this is List) get(0) else iterator().next())\n else -> this.toMutableList()\n }\n }\n return this.toMutableList().optimizeReadOnlyList()\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this collection.\n */\npublic fun Iterable.toMutableList(): MutableList {\n if (this is Collection)\n return this.toMutableList()\n return toCollection(ArrayList())\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this collection.\n */\npublic fun Collection.toMutableList(): MutableList {\n return ArrayList(this)\n}\n\n/**\n * Returns a [Set] of all elements.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun Iterable.toSet(): Set {\n if (this is Collection) {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(if (this is List) this[0] else iterator().next())\n else -> toCollection(LinkedHashSet(mapCapacity(size)))\n }\n }\n return toCollection(LinkedHashSet()).optimizeReadOnlySet()\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original collection.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun Iterable.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original collection.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapSequence\")\npublic inline fun Iterable.flatMap(transform: (T) -> Sequence): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterable\")\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.flatMapIndexed(transform: (index: Int, T) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.flatMapIndexed\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedSequence\")\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.flatMapIndexed(transform: (index: Int, T) -> Sequence): List {\n return flatMapIndexedTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original collection, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedIterableTo\")\n@kotlin.internal.InlineOnly\npublic inline fun > Iterable.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable): C {\n var index = 0\n for (element in this) {\n val list = transform(checkIndexOverflow(index++), element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element\n * and its index in the original collection, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapIndexedSequenceTo\")\n@kotlin.internal.InlineOnly\npublic inline fun > Iterable.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Sequence): C {\n var index = 0\n for (element in this) {\n val list = transform(checkIndexOverflow(index++), element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original collection, to the given [destination].\n */\npublic inline fun > Iterable.flatMapTo(destination: C, transform: (T) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each element of original collection, to the given [destination].\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"flatMapSequenceTo\")\npublic inline fun > Iterable.flatMapTo(destination: C, transform: (T) -> Sequence): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and returns a map where each group key is associated with a list of corresponding elements.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun Iterable.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and returns a map where each group key is associated with a list of corresponding values.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original collection.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun Iterable.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups elements of the original collection by the key returned by the given [keySelector] function\n * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> Iterable.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each element of the original collection\n * by the key returned by the given [keySelector] function applied to the element\n * and puts to the [destination] map each group key associated with a list of corresponding values.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun >> Iterable.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each element.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Iterable.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: T): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.map\n */\npublic inline fun Iterable.map(transform: (T) -> R): List {\n return mapTo(ArrayList(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Iterable.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(collectionSizeOrDefault(10)), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element and its index in the original collection.\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun Iterable.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Iterable.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C {\n forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element and its index in the original collection\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of an element and the element itself\n * and returns the result of the transform applied to the element.\n */\npublic inline fun > Iterable.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C {\n var index = 0\n for (item in this)\n destination.add(transform(checkIndexOverflow(index++), item))\n return destination\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each element in the original collection.\n * \n * @sample samples.collections.Collections.Transformations.mapNotNull\n */\npublic inline fun Iterable.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each element in the original collection\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Iterable.mapNotNullTo(destination: C, transform: (T) -> R?): C {\n forEach { element -> transform(element)?.let { destination.add(it) } }\n return destination\n}\n\n/**\n * Applies the given [transform] function to each element of the original collection\n * and appends the results to the given [destination].\n */\npublic inline fun > Iterable.mapTo(destination: C, transform: (T) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns a lazy [Iterable] that wraps each element of the original collection\n * into an [IndexedValue] containing the index of that element and the element itself.\n */\npublic fun Iterable.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns a list containing only distinct elements from the given collection.\n * \n * Among equal elements of the given collection, only the first one will be present in the resulting list.\n * The elements in the resulting list are in the same order as they were in the source collection.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic fun Iterable.distinct(): List {\n return this.toMutableSet().toList()\n}\n\n/**\n * Returns a list containing only elements from the given collection\n * having distinct keys returned by the given [selector] function.\n * \n * Among elements of the given collection with equal keys, only the first one will be present in the resulting list.\n * The elements in the resulting list are in the same order as they were in the source collection.\n * \n * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy\n */\npublic inline fun Iterable.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\n for (e in this) {\n val key = selector(e)\n if (set.add(key))\n list.add(e)\n }\n return list\n}\n\n/**\n * Returns a set containing all elements that are contained by both this collection and the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n * \n * To get a set containing all elements that are contained at least in one of these collections use [union].\n */\npublic infix fun Iterable.intersect(other: Iterable): Set {\n val set = this.toMutableSet()\n set.retainAll(other)\n return set\n}\n\n/**\n * Returns a set containing all elements that are contained by this collection and not contained by the specified collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic infix fun Iterable.subtract(other: Iterable): Set {\n val set = this.toMutableSet()\n set.removeAll(other)\n return set\n}\n\n/**\n * Returns a new [MutableSet] containing all distinct elements from the given collection.\n * \n * The returned set preserves the element iteration order of the original collection.\n */\npublic fun Iterable.toMutableSet(): MutableSet {\n return when (this) {\n is Collection -> LinkedHashSet(this)\n else -> toCollection(LinkedHashSet())\n }\n}\n\n/**\n * Returns a set containing all distinct elements from both collections.\n * \n * The returned set preserves the element iteration order of the original collection.\n * Those elements of the [other] collection that are unique are iterated in the end\n * in the order of the [other] collection.\n * \n * To get a set containing all elements that are contained in both collections use [intersect].\n */\npublic infix fun Iterable.union(other: Iterable): Set {\n val set = this.toMutableSet()\n set.addAll(other)\n return set\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Iterable.all(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if collection has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Iterable.any(): Boolean {\n if (this is Collection) return !isEmpty()\n return iterator().hasNext()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Iterable.any(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return false\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements in this collection.\n */\npublic fun Iterable.count(): Int {\n if (this is Collection) return size\n var count = 0\n for (element in this) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Returns the number of elements in this collection.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun Iterable.count(predicate: (T) -> Boolean): Int {\n if (this is Collection && isEmpty()) return 0\n var count = 0\n for (element in this) if (predicate(element)) checkCountOverflow(++count)\n return count\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns the specified [initial] value if the collection is empty.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n */\npublic inline fun Iterable.fold(initial: R, operation: (acc: R, T) -> R): R {\n var accumulator = initial\n for (element in this) accumulator = operation(accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * \n * Returns the specified [initial] value if the collection is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n */\npublic inline fun Iterable.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R {\n var index = 0\n var accumulator = initial\n for (element in this) accumulator = operation(checkIndexOverflow(index++), accumulator, element)\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns the specified [initial] value if the list is empty.\n * \n * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun List.foldRight(initial: R, operation: (T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with [initial] value and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * \n * Returns the specified [initial] value if the list is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun List.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R {\n var accumulator = initial\n if (!isEmpty()) {\n val iterator = listIterator(size)\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n }\n return accumulator\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@kotlin.internal.HidesMembers\npublic inline fun Iterable.forEach(action: (T) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\npublic inline fun Iterable.forEachIndexed(action: (index: Int, T) -> Unit): Unit {\n var index = 0\n for (item in this) action(checkIndexOverflow(index++), item)\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Double? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Float? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\npublic fun > Iterable.max(): T? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\npublic inline fun > Iterable.maxBy(selector: (T) -> R): T? {\n return maxByOrNull(selector)\n}\n\n/**\n * Returns the first element yielding the largest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun > Iterable.maxByOrNull(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxElem = iterator.next()\n if (!iterator.hasNext()) return maxElem\n var maxValue = selector(maxElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (maxValue < v) {\n maxElem = e\n maxValue = v\n }\n } while (iterator.hasNext())\n return maxElem\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.maxOf(selector: (T) -> Double): Double {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.maxOf(selector: (T) -> Float): Float {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > Iterable.maxOf(selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.maxOfOrNull(selector: (T) -> Double): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.maxOfOrNull(selector: (T) -> Float): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n maxValue = maxOf(maxValue, v)\n }\n return maxValue\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > Iterable.maxOfOrNull(selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (maxValue < v) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the collection.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.maxOfWith(comparator: Comparator, selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the collection or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.maxOfWithOrNull(comparator: Comparator, selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var maxValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(maxValue, v) < 0) {\n maxValue = v\n }\n }\n return maxValue\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Iterable.maxOrNull(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n max = maxOf(max, e)\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Iterable.maxOrNull(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n max = maxOf(max, e)\n }\n return max\n}\n\n/**\n * Returns the largest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun > Iterable.maxOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (max < e) max = e\n }\n return max\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\npublic fun Iterable.maxWith(comparator: Comparator): T? {\n return maxWithOrNull(comparator)\n}\n\n/**\n * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun Iterable.maxWithOrNull(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var max = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(max, e) < 0) max = e\n }\n return max\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Double? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Float? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\npublic fun > Iterable.min(): T? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\npublic inline fun > Iterable.minBy(selector: (T) -> R): T? {\n return minByOrNull(selector)\n}\n\n/**\n * Returns the first element yielding the smallest value of the given function or `null` if there are no elements.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun > Iterable.minByOrNull(selector: (T) -> R): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minElem = iterator.next()\n if (!iterator.hasNext()) return minElem\n var minValue = selector(minElem)\n do {\n val e = iterator.next()\n val v = selector(e)\n if (minValue > v) {\n minElem = e\n minValue = v\n }\n } while (iterator.hasNext())\n return minElem\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minOf(selector: (T) -> Double): Double {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minOf(selector: (T) -> Float): Float {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > Iterable.minOf(selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minOfOrNull(selector: (T) -> Double): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minOfOrNull(selector: (T) -> Float): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n minValue = minOf(minValue, v)\n }\n return minValue\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each element in the collection or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > Iterable.minOfOrNull(selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (minValue > v) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the collection.\n * \n * @throws NoSuchElementException if the collection is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minOfWith(comparator: Comparator, selector: (T) -> R): R {\n val iterator = iterator()\n if (!iterator.hasNext()) throw NoSuchElementException()\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each element in the collection or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minOfWithOrNull(comparator: Comparator, selector: (T) -> R): R? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var minValue = selector(iterator.next())\n while (iterator.hasNext()) {\n val v = selector(iterator.next())\n if (comparator.compare(minValue, v) > 0) {\n minValue = v\n }\n }\n return minValue\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Iterable.minOrNull(): Double? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n min = minOf(min, e)\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n * \n * If any of elements is `NaN` returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic fun Iterable.minOrNull(): Float? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n min = minOf(min, e)\n }\n return min\n}\n\n/**\n * Returns the smallest element or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun > Iterable.minOrNull(): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (min > e) min = e\n }\n return min\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\npublic fun Iterable.minWith(comparator: Comparator): T? {\n return minWithOrNull(comparator)\n}\n\n/**\n * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements.\n */\n@SinceKotlin(\"1.4\")\npublic fun Iterable.minWithOrNull(comparator: Comparator): T? {\n val iterator = iterator()\n if (!iterator.hasNext()) return null\n var min = iterator.next()\n while (iterator.hasNext()) {\n val e = iterator.next()\n if (comparator.compare(min, e) > 0) min = e\n }\n return min\n}\n\n/**\n * Returns `true` if the collection has no elements.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Iterable.none(): Boolean {\n if (this is Collection) return isEmpty()\n return !iterator().hasNext()\n}\n\n/**\n * Returns `true` if no elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Iterable.none(predicate: (T) -> Boolean): Boolean {\n if (this is Collection && isEmpty()) return true\n for (element in this) if (predicate(element)) return false\n return true\n}\n\n/**\n * Performs the given [action] on each element and returns the collection itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > C.onEach(action: (T) -> Unit): C {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each element, providing sequential index with the element,\n * and returns the collection itself afterwards.\n * @param [action] function that takes the index of an element and the element itself\n * and performs the action on the element.\n */\n@SinceKotlin(\"1.4\")\npublic inline fun > C.onEachIndexed(action: (index: Int, T) -> Unit): C {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Throws an exception if this collection is empty. If the collection can be empty in an expected way,\n * please use [reduceOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Iterable.reduce(operation: (acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * \n * Throws an exception if this collection is empty. If the collection can be empty in an expected way,\n * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun Iterable.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S {\n val iterator = this.iterator()\n if (!iterator.hasNext()) throw UnsupportedOperationException(\"Empty collection can't be reduced.\")\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element with its index in the original collection.\n * \n * Returns `null` if the collection is empty.\n * \n * @param [operation] function that takes the index of an element, current accumulator value and the element itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun Iterable.reduceIndexedOrNull(operation: (index: Int, acc: S, T) -> S): S? {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return null\n var index = 1\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(checkIndexOverflow(index++), accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the first element and applying [operation] from left to right\n * to current accumulator value and each element.\n * \n * Returns `null` if the collection is empty.\n * \n * @param [operation] function that takes current accumulator value and an element,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun Iterable.reduceOrNull(operation: (acc: S, T) -> S): S? {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return null\n var accumulator: S = iterator.next()\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Throws an exception if this list is empty. If the list can be empty in an expected way,\n * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun List.reduceRight(operation: (T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * \n * Throws an exception if this list is empty. If the list can be empty in an expected way,\n * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun List.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n throw UnsupportedOperationException(\"Empty list can't be reduced.\")\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element with its index in the original list and current accumulator value.\n * \n * Returns `null` if the list is empty.\n * \n * @param [operation] function that takes the index of an element, the element itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun List.reduceRightIndexedOrNull(operation: (index: Int, T, acc: S) -> S): S? {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n return null\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n val index = iterator.previousIndex()\n accumulator = operation(index, iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Accumulates value starting with the last element and applying [operation] from right to left\n * to each element and current accumulator value.\n * \n * Returns `null` if the list is empty.\n * \n * @param [operation] function that takes an element and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRightOrNull\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun List.reduceRightOrNull(operation: (T, acc: S) -> S): S? {\n val iterator = listIterator(size)\n if (!iterator.hasPrevious())\n return null\n var accumulator: S = iterator.previous()\n while (iterator.hasPrevious()) {\n accumulator = operation(iterator.previous(), accumulator)\n }\n return accumulator\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\npublic inline fun Iterable.runningFold(initial: R, operation: (acc: R, T) -> R): List {\n val estimatedSize = collectionSizeOrDefault(9)\n if (estimatedSize == 0) return listOf(initial)\n val result = ArrayList(estimatedSize + 1).apply { add(initial) }\n var accumulator = initial\n for (element in this) {\n accumulator = operation(accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original collection and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\npublic inline fun Iterable.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List {\n val estimatedSize = collectionSizeOrDefault(9)\n if (estimatedSize == 0) return listOf(initial)\n val result = ArrayList(estimatedSize + 1).apply { add(initial) }\n var index = 0\n var accumulator = initial\n for (element in this) {\n accumulator = operation(index++, accumulator, element)\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with the first element of this collection.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and the element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun Iterable.runningReduce(operation: (acc: S, T) -> S): List {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return emptyList()\n var accumulator: S = iterator.next()\n val result = ArrayList(collectionSizeOrDefault(10)).apply { add(accumulator) }\n while (iterator.hasNext()) {\n accumulator = operation(accumulator, iterator.next())\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original collection and current accumulator value that starts with the first element of this collection.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\npublic inline fun Iterable.runningReduceIndexed(operation: (index: Int, acc: S, T) -> S): List {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return emptyList()\n var accumulator: S = iterator.next()\n val result = ArrayList(collectionSizeOrDefault(10)).apply { add(accumulator) }\n var index = 1\n while (iterator.hasNext()) {\n accumulator = operation(index++, accumulator, iterator.next())\n result.add(accumulator)\n }\n return result\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun Iterable.scan(initial: R, operation: (acc: R, T) -> R): List {\n return runningFold(initial, operation)\n}\n\n/**\n * Returns a list containing successive accumulation values generated by applying [operation] from left to right\n * to each element, its index in the original collection and current accumulator value that starts with [initial] value.\n * \n * Note that `acc` value passed to [operation] function should not be mutated;\n * otherwise it would affect the previous value in resulting list.\n * \n * @param [operation] function that takes the index of an element, current accumulator value\n * and the element itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.scan\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic inline fun Iterable.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List {\n return runningFoldIndexed(initial, operation)\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@Deprecated(\"Use sumOf instead.\", ReplaceWith(\"this.sumOf(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.5\")\npublic inline fun Iterable.sumBy(selector: (T) -> Int): Int {\n var sum: Int = 0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@Deprecated(\"Use sumOf instead.\", ReplaceWith(\"this.sumOf(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.5\")\npublic inline fun Iterable.sumByDouble(selector: (T) -> Double): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.sumOf(selector: (T) -> Double): Double {\n var sum: Double = 0.toDouble()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.sumOf(selector: (T) -> Int): Int {\n var sum: Int = 0.toInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.sumOf(selector: (T) -> Long): Long {\n var sum: Long = 0.toLong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@SinceKotlin(\"1.5\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@WasExperimental(ExperimentalUnsignedTypes::class)\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.sumOf(selector: (T) -> UInt): UInt {\n var sum: UInt = 0.toUInt()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each element in the collection.\n */\n@SinceKotlin(\"1.5\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@WasExperimental(ExperimentalUnsignedTypes::class)\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.sumOf(selector: (T) -> ULong): ULong {\n var sum: ULong = 0.toULong()\n for (element in this) {\n sum += selector(element)\n }\n return sum\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun Iterable.requireNoNulls(): Iterable {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as Iterable\n}\n\n/**\n * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements.\n */\npublic fun List.requireNoNulls(): List {\n for (element in this) {\n if (element == null) {\n throw IllegalArgumentException(\"null element found in $this.\")\n }\n }\n @Suppress(\"UNCHECKED_CAST\")\n return this as List\n}\n\n/**\n * Splits this collection into a list of lists each not exceeding the given [size].\n * \n * The last list in the resulting list may have fewer elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.chunked(size: Int): List> {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this collection into several lists each not exceeding the given [size]\n * and applies the given [transform] function to an each.\n * \n * @return list of results of the [transform] applied to an each list.\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * The last list may have fewer elements than the given [size].\n * \n * @param size the number of elements to take in each list, must be positive and can be greater than the number of elements in this collection.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.chunked(size: Int, transform: (List) -> R): List {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\npublic operator fun Iterable.minus(element: T): List {\n val result = ArrayList(collectionSizeOrDefault(10))\n var removed = false\n return this.filterTo(result) { if (!removed && it == element) { removed = true; false } else true }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] array.\n * \n * The [elements] array may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Array): List {\n if (elements.isEmpty()) return this.toList()\n val other = elements.toHashSet()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] collection.\n * \n * The [elements] collection may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Iterable): List {\n val other = elements.convertToSetForSetOperationWith(this)\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection except the elements contained in the given [elements] sequence.\n * \n * The [elements] sequence may be converted to a [HashSet] to speed up the operation, thus the elements are required to have\n * a correct and stable implementation of `hashCode()` that doesn't change between successive invocations.\n */\npublic operator fun Iterable.minus(elements: Sequence): List {\n val other = elements.toHashSet()\n if (other.isEmpty())\n return this.toList()\n return this.filterNot { it in other }\n}\n\n/**\n * Returns a list containing all elements of the original collection without the first occurrence of the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.minusElement(element: T): List {\n return minus(element)\n}\n\n/**\n * Splits the original collection into pair of lists,\n * where *first* list contains elements for which [predicate] yielded `true`,\n * while *second* list contains elements for which [predicate] yielded `false`.\n * \n * @sample samples.collections.Iterables.Operations.partition\n */\npublic inline fun Iterable.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\n for (element in this) {\n if (predicate(element)) {\n first.add(element)\n } else {\n second.add(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun Iterable.plus(element: T): List {\n if (this is Collection) return this.plus(element)\n val result = ArrayList()\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\npublic operator fun Collection.plus(element: T): List {\n val result = ArrayList(size + 1)\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun Iterable.plus(elements: Array): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] array.\n */\npublic operator fun Collection.plus(elements: Array): List {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun Iterable.plus(elements: Iterable): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] collection.\n */\npublic operator fun Collection.plus(elements: Iterable): List {\n if (elements is Collection) {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n } else {\n val result = ArrayList(this)\n result.addAll(elements)\n return result\n }\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun Iterable.plus(elements: Sequence): List {\n val result = ArrayList()\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then all elements of the given [elements] sequence.\n */\npublic operator fun Collection.plus(elements: Sequence): List {\n val result = ArrayList(this.size + 10)\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.plusElement(element: T): List {\n return plus(element)\n}\n\n/**\n * Returns a list containing all elements of the original collection and then the given [element].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Collection.plusElement(element: T): List {\n return plus(element)\n}\n\n/**\n * Returns a list of snapshots of the window of the given [size]\n * sliding along this collection with the given [step], where each\n * snapshot is a list.\n * \n * Several last lists may have fewer elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.takeWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): List> {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val resultCapacity = thisSize / step + if (thisSize % step == 0) 0 else 1\n val result = ArrayList>(resultCapacity)\n var index = 0\n while (index in 0 until thisSize) {\n val windowSize = size.coerceAtMost(thisSize - index)\n if (windowSize < size && !partialWindows) break\n result.add(List(windowSize) { this[it + index] })\n index += step\n }\n return result\n }\n val result = ArrayList>()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = false).forEach {\n result.add(it)\n }\n return result\n}\n\n/**\n * Returns a list of results of applying the given [transform] function to\n * an each list representing a view over the window of the given [size]\n * sliding along this collection with the given [step].\n * \n * Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.\n * You should not store it or allow it to escape in some way, unless you made a snapshot of it.\n * Several last lists may have fewer elements than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this collection.\n * @param size the number of elements to take in each window\n * @param step the number of elements to move the window forward by on an each step, by default 1\n * @param partialWindows controls whether or not to keep partial windows in the end if any,\n * by default `false` which means partial windows won't be preserved\n * \n * @sample samples.collections.Sequences.Transformations.averageWindows\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List) -> R): List {\n checkWindowSizeStep(size, step)\n if (this is RandomAccess && this is List) {\n val thisSize = this.size\n val resultCapacity = thisSize / step + if (thisSize % step == 0) 0 else 1\n val result = ArrayList(resultCapacity)\n val window = MovingSubList(this)\n var index = 0\n while (index in 0 until thisSize) {\n val windowSize = size.coerceAtMost(thisSize - index)\n if (!partialWindows && windowSize < size) break\n window.move(index, index + windowSize)\n result.add(transform(window))\n index += step\n }\n return result\n }\n val result = ArrayList()\n windowedIterator(iterator(), size, step, partialWindows, reuseBuffer = true).forEach {\n result.add(transform(it))\n }\n return result\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and the [other] array with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Iterable.zip(other: Array): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] array with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Iterable.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val arraySize = other.size\n val list = ArrayList(minOf(collectionSizeOrDefault(10), arraySize))\n var i = 0\n for (element in this) {\n if (i >= arraySize) break\n list.add(transform(element, other[i++]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs built from the elements of `this` collection and [other] collection with the same index.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterable\n */\npublic infix fun Iterable.zip(other: Iterable): List> {\n return zip(other) { t1, t2 -> t1 to t2 }\n}\n\n/**\n * Returns a list of values built from the elements of `this` collection and the [other] collection with the same index\n * using the provided [transform] function applied to each pair of elements.\n * The returned list has length of the shortest collection.\n * \n * @sample samples.collections.Iterables.Operations.zipIterableWithTransform\n */\npublic inline fun Iterable.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val first = iterator()\n val second = other.iterator()\n val list = ArrayList(minOf(collectionSizeOrDefault(10), other.collectionSizeOrDefault(10)))\n while (first.hasNext() && second.hasNext()) {\n list.add(transform(first.next(), second.next()))\n }\n return list\n}\n\n/**\n * Returns a list of pairs of each two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun Iterable.zipWithNext(): List> {\n return zipWithNext { a, b -> a to b }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to an each pair of two adjacent elements in this collection.\n * \n * The returned list is empty if this collection contains less than two elements.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic inline fun Iterable.zipWithNext(transform: (a: T, b: T) -> R): List {\n val iterator = iterator()\n if (!iterator.hasNext()) return emptyList()\n val result = mutableListOf()\n var current = iterator.next()\n while (iterator.hasNext()) {\n val next = iterator.next()\n result.add(transform(current, next))\n current = next\n }\n return result\n}\n\n/**\n * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinTo\n */\npublic fun Iterable.joinTo(buffer: A, separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): A {\n buffer.append(prefix)\n var count = 0\n for (element in this) {\n if (++count > 1) buffer.append(separator)\n if (limit < 0 || count <= limit) {\n buffer.appendElement(element, transform)\n } else break\n }\n if (limit >= 0 && count > limit) buffer.append(truncated)\n buffer.append(postfix)\n return buffer\n}\n\n/**\n * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied.\n * \n * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit]\n * elements will be appended, followed by the [truncated] string (which defaults to \"...\").\n * \n * @sample samples.collections.Collections.Transformations.joinToString\n */\npublic fun Iterable.joinToString(separator: CharSequence = \", \", prefix: CharSequence = \"\", postfix: CharSequence = \"\", limit: Int = -1, truncated: CharSequence = \"...\", transform: ((T) -> CharSequence)? = null): String {\n return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()\n}\n\n/**\n * Returns this collection as an [Iterable].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable.asIterable(): Iterable {\n return this\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original collection returning its elements when being iterated.\n * \n * @sample samples.collections.Sequences.Building.sequenceFromCollection\n */\npublic fun Iterable.asSequence(): Sequence {\n return Sequence { this.iterator() }\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfByte\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfShort\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfInt\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfLong\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfFloat\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns an average value of elements in the collection.\n */\n@kotlin.jvm.JvmName(\"averageOfDouble\")\npublic fun Iterable.average(): Double {\n var sum: Double = 0.0\n var count: Int = 0\n for (element in this) {\n sum += element\n checkCountOverflow(++count)\n }\n return if (count == 0) Double.NaN else sum / count\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfByte\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfShort\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfInt\")\npublic fun Iterable.sum(): Int {\n var sum: Int = 0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfLong\")\npublic fun Iterable.sum(): Long {\n var sum: Long = 0L\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfFloat\")\npublic fun Iterable.sum(): Float {\n var sum: Float = 0.0f\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n/**\n * Returns the sum of all elements in the collection.\n */\n@kotlin.jvm.JvmName(\"sumOfDouble\")\npublic fun Iterable.sum(): Double {\n var sum: Double = 0.0\n for (element in this) {\n sum += element\n }\n return sum\n}\n\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n@file:kotlin.jvm.JvmName(\"ComparisonsKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin.comparisons\n\n/**\n * Compares two values using the specified functions [selectors] to calculate the result of the comparison.\n * The functions are called sequentially, receive the given values [a] and [b] and return [Comparable]\n * objects. As soon as the [Comparable] instances returned by a function for [a] and [b] values do not\n * compare as equal, the result of that comparison is returned.\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithSelectors\n */\npublic fun compareValuesBy(a: T, b: T, vararg selectors: (T) -> Comparable<*>?): Int {\n require(selectors.size > 0)\n return compareValuesByImpl(a, b, selectors)\n}\n\nprivate fun compareValuesByImpl(a: T, b: T, selectors: Array Comparable<*>?>): Int {\n for (fn in selectors) {\n val v1 = fn(a)\n val v2 = fn(b)\n val diff = compareValues(v1, v2)\n if (diff != 0) return diff\n }\n return 0\n}\n\n/**\n * Compares two values using the specified [selector] function to calculate the result of the comparison.\n * The function is applied to the given values [a] and [b] and return [Comparable] objects.\n * The result of comparison of these [Comparable] instances is returned.\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareValuesBy(a: T, b: T, selector: (T) -> Comparable<*>?): Int {\n return compareValues(selector(a), selector(b))\n}\n\n/**\n * Compares two values using the specified [selector] function to calculate the result of the comparison.\n * The function is applied to the given values [a] and [b] and return objects of type K which are then being\n * compared with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareValuesBy(a: T, b: T, comparator: Comparator, selector: (T) -> K): Int {\n return comparator.compare(selector(a), selector(b))\n}\n\n//// Not so useful without type inference for receiver of expression\n//// compareValuesWith(v1, v2, compareBy { it.prop1 } thenByDescending { it.prop2 })\n///**\n// * Compares two values using the specified [comparator].\n// */\n//@Suppress(\"NOTHING_TO_INLINE\")\n//public inline fun compareValuesWith(a: T, b: T, comparator: Comparator): Int = comparator.compare(a, b)\n//\n\n\n/**\n * Compares two nullable [Comparable] values. Null is considered less than any value.\n *\n * @sample samples.comparisons.Comparisons.compareValues\n */\npublic fun > compareValues(a: T?, b: T?): Int {\n if (a === b) return 0\n if (a == null) return -1\n if (b == null) return 1\n\n @Suppress(\"UNCHECKED_CAST\")\n return (a as Comparable).compareTo(b)\n}\n\n/**\n * Creates a comparator using the sequence of functions to calculate a result of comparison.\n * The functions are called sequentially, receive the given values `a` and `b` and return [Comparable]\n * objects. As soon as the [Comparable] instances returned by a function for `a` and `b` values do not\n * compare as equal, the result of that comparison is returned from the [Comparator].\n *\n * @sample samples.comparisons.Comparisons.compareByWithSelectors\n */\npublic fun compareBy(vararg selectors: (T) -> Comparable<*>?): Comparator {\n require(selectors.size > 0)\n return Comparator { a, b -> compareValuesByImpl(a, b, selectors) }\n}\n\n\n/**\n * Creates a comparator using the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.compareByWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareBy(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b -> compareValuesBy(a, b, selector) }\n\n/**\n * Creates a comparator using the [selector] function to transform values being compared and then applying\n * the specified [comparator] to compare transformed values.\n *\n * @sample samples.comparisons.Comparisons.compareByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareBy(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b -> compareValuesBy(a, b, comparator, selector) }\n\n/**\n * Creates a descending comparator using the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.compareByDescendingWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareByDescending(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b -> compareValuesBy(b, a, selector) }\n\n/**\n * Creates a descending comparator using the [selector] function to transform values being compared and then applying\n * the specified [comparator] to compare transformed values.\n *\n * Note that an order of [comparator] is reversed by this wrapper.\n *\n * @sample samples.comparisons.Comparisons.compareByDescendingWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareByDescending(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b -> compareValuesBy(b, a, comparator, selector) }\n\n/**\n * Creates a comparator comparing values after the primary comparator defined them equal. It uses\n * the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.thenBy\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenBy(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenBy.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(a, b, selector)\n }\n\n/**\n * Creates a comparator comparing values after the primary comparator defined them equal. It uses\n * the [selector] function to transform values and then compares them with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.thenByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenBy(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenBy.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(a, b, comparator, selector)\n }\n\n/**\n * Creates a descending comparator using the primary comparator and\n * the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.thenByDescending\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenByDescending(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenByDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(b, a, selector)\n }\n\n/**\n * Creates a descending comparator comparing values after the primary comparator defined them equal. It uses\n * the [selector] function to transform values and then compares them with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.thenByDescendingWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenByDescending(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenByDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(b, a, comparator, selector)\n }\n\n\n/**\n * Creates a comparator using the primary comparator and function to calculate a result of comparison.\n *\n * @sample samples.comparisons.Comparisons.thenComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenComparator(crossinline comparison: (a: T, b: T) -> Int): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenComparator.compare(a, b)\n if (previousCompare != 0) previousCompare else comparison(a, b)\n }\n\n/**\n * Combines this comparator and the given [comparator] such that the latter is applied only\n * when the former considered values equal.\n *\n * @sample samples.comparisons.Comparisons.then\n */\npublic infix fun Comparator.then(comparator: Comparator): Comparator =\n Comparator { a, b ->\n val previousCompare = this@then.compare(a, b)\n if (previousCompare != 0) previousCompare else comparator.compare(a, b)\n }\n\n/**\n * Combines this comparator and the given [comparator] such that the latter is applied only\n * when the former considered values equal.\n *\n * @sample samples.comparisons.Comparisons.thenDescending\n */\npublic infix fun Comparator.thenDescending(comparator: Comparator): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else comparator.compare(b, a)\n }\n\n// Not so useful without type inference for receiver of expression\n/**\n * Extends the given [comparator] of non-nullable values to a comparator of nullable values\n * considering `null` value less than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun nullsFirst(comparator: Comparator): Comparator =\n Comparator { a, b ->\n when {\n a === b -> 0\n a == null -> -1\n b == null -> 1\n else -> comparator.compare(a, b)\n }\n }\n\n/**\n * Provides a comparator of nullable [Comparable] values\n * considering `null` value less than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun > nullsFirst(): Comparator = nullsFirst(naturalOrder())\n\n/**\n * Extends the given [comparator] of non-nullable values to a comparator of nullable values\n * considering `null` value greater than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun nullsLast(comparator: Comparator): Comparator =\n Comparator { a, b ->\n when {\n a === b -> 0\n a == null -> 1\n b == null -> -1\n else -> comparator.compare(a, b)\n }\n }\n\n/**\n * Provides a comparator of nullable [Comparable] values\n * considering `null` value greater than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun > nullsLast(): Comparator = nullsLast(naturalOrder())\n\n/**\n * Returns a comparator that compares [Comparable] objects in natural order.\n *\n * @sample samples.comparisons.Comparisons.naturalOrderComparator\n */\npublic fun > naturalOrder(): Comparator = @Suppress(\"UNCHECKED_CAST\") (NaturalOrderComparator as Comparator)\n\n/**\n * Returns a comparator that compares [Comparable] objects in reversed natural order.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun > reverseOrder(): Comparator = @Suppress(\"UNCHECKED_CAST\") (ReverseOrderComparator as Comparator)\n\n/**\n * Returns a comparator that imposes the reverse ordering of this comparator.\n *\n * @sample samples.comparisons.Comparisons.reversed\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Comparator.reversed(): Comparator = when (this) {\n is ReversedComparator -> this.comparator\n NaturalOrderComparator -> @Suppress(\"UNCHECKED_CAST\") (ReverseOrderComparator as Comparator)\n ReverseOrderComparator -> @Suppress(\"UNCHECKED_CAST\") (NaturalOrderComparator as Comparator)\n else -> ReversedComparator(this)\n}\n\n\nprivate class ReversedComparator(public val comparator: Comparator) : Comparator {\n override fun compare(a: T, b: T): Int = comparator.compare(b, a)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator = comparator\n}\n\nprivate object NaturalOrderComparator : Comparator> {\n override fun compare(a: Comparable, b: Comparable): Int = a.compareTo(b)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator> = ReverseOrderComparator\n}\n\nprivate object ReverseOrderComparator : Comparator> {\n override fun compare(a: Comparable, b: Comparable): Int = b.compareTo(a)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator> = NaturalOrderComparator\n}\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n@file:Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\n\npackage kotlin.text\n\nimport kotlin.contracts.*\n\n/**\n * A mutable sequence of characters.\n *\n * String builder can be used to efficiently perform multiple string manipulation operations.\n */\nexpect class StringBuilder : Appendable, CharSequence {\n /** Constructs an empty string builder. */\n constructor()\n\n /** Constructs an empty string builder with the specified initial [capacity]. */\n constructor(capacity: Int)\n\n /** Constructs a string builder that contains the same characters as the specified [content] char sequence. */\n constructor(content: CharSequence)\n\n /** Constructs a string builder that contains the same characters as the specified [content] string. */\n @SinceKotlin(\"1.3\")\n// @ExperimentalStdlibApi\n constructor(content: String)\n\n override val length: Int\n\n override operator fun get(index: Int): Char\n\n override fun subSequence(startIndex: Int, endIndex: Int): CharSequence\n\n override fun append(value: Char): StringBuilder\n override fun append(value: CharSequence?): StringBuilder\n override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder\n\n /**\n * Reverses the contents of this string builder and returns this instance.\n *\n * Surrogate pairs included in this string builder are treated as single characters.\n * Therefore, the order of the high-low surrogates is never reversed.\n *\n * Note that the reverse operation may produce new surrogate pairs that were unpaired low-surrogates and high-surrogates before the operation.\n * For example, reversing `\"\\uDC00\\uD800\"` produces `\"\\uD800\\uDC00\"` which is a valid surrogate pair.\n */\n fun reverse(): StringBuilder\n\n /**\n * Appends the string representation of the specified object [value] to this string builder and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was appended to this string builder.\n */\n fun append(value: Any?): StringBuilder\n\n /**\n * Appends the string representation of the specified boolean [value] to this string builder and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was appended to this string builder.\n */\n @SinceKotlin(\"1.3\")\n fun append(value: Boolean): StringBuilder\n\n /**\n * Appends characters in the specified character array [value] to this string builder and returns this instance.\n *\n * Characters are appended in order, starting at the index 0.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun append(value: CharArray): StringBuilder\n\n /**\n * Appends the specified string [value] to this string builder and returns this instance.\n *\n * If [value] is `null`, then the four characters `\"null\"` are appended.\n */\n @SinceKotlin(\"1.3\")\n fun append(value: String?): StringBuilder\n\n /**\n * Returns the current capacity of this string builder.\n *\n * The capacity is the maximum length this string builder can have before an allocation occurs.\n */\n @SinceKotlin(\"1.3\")\n// @ExperimentalStdlibApi\n @Deprecated(\"Obtaining StringBuilder capacity is not supported in JS and common code.\", level = DeprecationLevel.ERROR)\n fun capacity(): Int\n\n /**\n * Ensures that the capacity of this string builder is at least equal to the specified [minimumCapacity].\n *\n * If the current capacity is less than the [minimumCapacity], a new backing storage is allocated with greater capacity.\n * Otherwise, this method takes no action and simply returns.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun ensureCapacity(minimumCapacity: Int)\n\n /**\n * Returns the index within this string builder of the first occurrence of the specified [string].\n *\n * Returns `-1` if the specified [string] does not occur in this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun indexOf(string: String): Int\n\n /**\n * Returns the index within this string builder of the first occurrence of the specified [string],\n * starting at the specified [startIndex].\n *\n * Returns `-1` if the specified [string] does not occur in this string builder starting at the specified [startIndex].\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun indexOf(string: String, startIndex: Int): Int\n\n /**\n * Returns the index within this string builder of the last occurrence of the specified [string].\n * The last occurrence of empty string `\"\"` is considered to be at the index equal to `this.length`.\n *\n * Returns `-1` if the specified [string] does not occur in this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun lastIndexOf(string: String): Int\n\n /**\n * Returns the index within this string builder of the last occurrence of the specified [string],\n * starting from the specified [startIndex] toward the beginning.\n *\n * Returns `-1` if the specified [string] does not occur in this string builder starting at the specified [startIndex].\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun lastIndexOf(string: String, startIndex: Int): Int\n\n /**\n * Inserts the string representation of the specified boolean [value] into this string builder at the specified [index] and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was inserted into this string builder at the specified [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: Boolean): StringBuilder\n\n /**\n * Inserts the specified character [value] into this string builder at the specified [index] and returns this instance.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: Char): StringBuilder\n\n /**\n * Inserts characters in the specified character array [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in same order as in the [value] character array, starting at [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: CharArray): StringBuilder\n\n /**\n * Inserts characters in the specified character sequence [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in the same order as in the [value] character sequence, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the character sequence from which characters are inserted. If [value] is `null`, then the four characters `\"null\"` are inserted.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: CharSequence?): StringBuilder\n\n /**\n * Inserts the string representation of the specified object [value] into this string builder at the specified [index] and returns this instance.\n *\n * The overall effect is exactly as if the [value] were converted to a string by the `value.toString()` method,\n * and then that string was inserted into this string builder at the specified [index].\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: Any?): StringBuilder\n\n /**\n * Inserts the string [value] into this string builder at the specified [index] and returns this instance.\n *\n * If [value] is `null`, then the four characters `\"null\"` are inserted.\n *\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun insert(index: Int, value: String?): StringBuilder\n\n /**\n * Sets the length of this string builder to the specified [newLength].\n *\n * If the [newLength] is less than the current length, it is changed to the specified [newLength].\n * Otherwise, null characters '\\u0000' are appended to this string builder until its length is less than the [newLength].\n *\n * Note that in Kotlin/JS [set] operator function has non-constant execution time complexity.\n * Therefore, increasing length of this string builder and then updating each character by index may slow down your program.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] if [newLength] is less than zero.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun setLength(newLength: Int)\n\n /**\n * Returns a new [String] that contains characters in this string builder at [startIndex] (inclusive) and up to the [length] (exclusive).\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or greater than the length of this string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun substring(startIndex: Int): String\n\n /**\n * Returns a new [String] that contains characters in this string builder at [startIndex] (inclusive) and up to the [endIndex] (exclusive).\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun substring(startIndex: Int, endIndex: Int): String\n\n /**\n * Attempts to reduce storage used for this string builder.\n *\n * If the backing storage of this string builder is larger than necessary to hold its current contents,\n * then it may be resized to become more space efficient.\n * Calling this method may, but is not required to, affect the value of the [capacity] property.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n fun trimToSize()\n}\n\n\n/**\n * Clears the content of this string builder making it empty and returns this instance.\n *\n * @sample samples.text.Strings.clearStringBuilder\n */\n@SinceKotlin(\"1.3\")\npublic expect fun StringBuilder.clear(): StringBuilder\n\n/**\n * Sets the character at the specified [index] to the specified [value].\n *\n * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect operator fun StringBuilder.set(index: Int, value: Char)\n\n/**\n * Replaces characters in the specified range of this string builder with characters in the specified string [value] and returns this instance.\n *\n * @param startIndex the beginning (inclusive) of the range to replace.\n * @param endIndex the end (exclusive) of the range to replace.\n * @param value the string to replace with.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] if [startIndex] is less than zero, greater than the length of this string builder, or `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.setRange(startIndex: Int, endIndex: Int, value: String): StringBuilder\n\n/**\n * Removes the character at the specified [index] from this string builder and returns this instance.\n *\n * If the `Char` at the specified [index] is part of a supplementary code point, this method does not remove the entire supplementary character.\n *\n * @param index the index of `Char` to remove.\n *\n * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.deleteAt(index: Int): StringBuilder\n\n/**\n * Removes characters in the specified range from this string builder and returns this instance.\n *\n * @param startIndex the beginning (inclusive) of the range to remove.\n * @param endIndex the end (exclusive) of the range to remove.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.deleteRange(startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Copies characters from this string builder into the [destination] character array.\n *\n * @param destination the array to copy to.\n * @param destinationOffset the position in the array to copy to, 0 by default.\n * @param startIndex the beginning (inclusive) of the range to copy, 0 by default.\n * @param endIndex the end (exclusive) of the range to copy, length of this string builder by default.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this string builder indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset],\n * or when that index is out of the [destination] array indices range.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.toCharArray(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = this.length)\n\n/**\n * Appends characters in a subarray of the specified character array [value] to this string builder and returns this instance.\n *\n * Characters are appended in order, starting at specified [startIndex].\n *\n * @param value the array from which characters are appended.\n * @param startIndex the beginning (inclusive) of the subarray to append.\n * @param endIndex the end (exclusive) of the subarray to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] array indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.appendRange(value: CharArray, startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Appends a subsequence of the specified character sequence [value] to this string builder and returns this instance.\n *\n * @param value the character sequence from which a subsequence is appended.\n * @param startIndex the beginning (inclusive) of the subsequence to append.\n * @param endIndex the end (exclusive) of the subsequence to append.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.appendRange(value: CharSequence, startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Inserts characters in a subarray of the specified character array [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in same order as in the [value] array, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the array from which characters are inserted.\n * @param startIndex the beginning (inclusive) of the subarray to insert.\n * @param endIndex the end (exclusive) of the subarray to insert.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] array indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.insertRange(index: Int, value: CharArray, startIndex: Int, endIndex: Int): StringBuilder\n\n/**\n * Inserts characters in a subsequence of the specified character sequence [value] into this string builder at the specified [index] and returns this instance.\n *\n * The inserted characters go in the same order as in the [value] character sequence, starting at [index].\n *\n * @param index the position in this string builder to insert at.\n * @param value the character sequence from which a subsequence is inserted.\n * @param startIndex the beginning (inclusive) of the subsequence to insert.\n * @param endIndex the end (exclusive) of the subsequence to insert.\n *\n * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of the [value] character sequence indices or when `startIndex > endIndex`.\n * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun StringBuilder.insertRange(index: Int, value: CharSequence, startIndex: Int, endIndex: Int): StringBuilder\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\n@Deprecated(\"Use append(value: Any?) instead\", ReplaceWith(\"append(value = obj)\"), DeprecationLevel.WARNING)\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.append(obj: Any?): StringBuilder = this.append(obj)\n\n/**\n * Builds new string by populating newly created [StringBuilder] using provided [builderAction]\n * and then converting it to [String].\n */\n@kotlin.internal.InlineOnly\npublic inline fun buildString(builderAction: StringBuilder.() -> Unit): String {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return StringBuilder().apply(builderAction).toString()\n}\n\n/**\n * Builds new string by populating newly created [StringBuilder] initialized with the given [capacity]\n * using provided [builderAction] and then converting it to [String].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun buildString(capacity: Int, builderAction: StringBuilder.() -> Unit): String {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return StringBuilder(capacity).apply(builderAction).toString()\n}\n\n/**\n * Appends all arguments to the given StringBuilder.\n */\npublic fun StringBuilder.append(vararg value: String?): StringBuilder {\n for (item in value)\n append(item)\n return this\n}\n\n/**\n * Appends all arguments to the given StringBuilder.\n */\npublic fun StringBuilder.append(vararg value: Any?): StringBuilder {\n for (item in value)\n append(item)\n return this\n}\n\n/** Appends a line feed character (`\\n`) to this StringBuilder. */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(): StringBuilder = append('\\n')\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: CharSequence?): StringBuilder = append(value).appendLine()\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: String?): StringBuilder = append(value).appendLine()\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: Any?): StringBuilder = append(value).appendLine()\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: CharArray): StringBuilder = append(value).appendLine()\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: Char): StringBuilder = append(value).appendLine()\n\n/** Appends [value] to this [StringBuilder], followed by a line feed character (`\\n`). */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun StringBuilder.appendLine(value: Boolean): StringBuilder = append(value).appendLine()\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StandardKt\")\npackage kotlin\n\nimport kotlin.contracts.*\n\n/**\n * An exception is thrown to indicate that a method body remains to be implemented.\n */\npublic class NotImplementedError(message: String = \"An operation is not implemented.\") : Error(message)\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n */\n\n@kotlin.internal.InlineOnly\npublic inline fun TODO(): Nothing = throw NotImplementedError()\n\n/**\n * Always throws [NotImplementedError] stating that operation is not implemented.\n *\n * @param reason a string explaining why the implementation is missing.\n */\n@kotlin.internal.InlineOnly\npublic inline fun TODO(reason: String): Nothing = throw NotImplementedError(\"An operation is not implemented: $reason\")\n\n\n\n/**\n * Calls the specified function [block] and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun run(block: () -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#run).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.run(block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block()\n}\n\n/**\n * Calls the specified function [block] with the given [receiver] as its receiver and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#with).\n */\n@kotlin.internal.InlineOnly\npublic inline fun with(receiver: T, block: T.() -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return receiver.block()\n}\n\n/**\n * Calls the specified function [block] with `this` value as its receiver and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#apply).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.apply(block: T.() -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block()\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns `this` value.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#also).\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.also(block: (T) -> Unit): T {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n block(this)\n return this\n}\n\n/**\n * Calls the specified function [block] with `this` value as its argument and returns its result.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#let).\n */\n@kotlin.internal.InlineOnly\npublic inline fun T.let(block: (T) -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return block(this)\n}\n\n/**\n * Returns `this` value if it satisfies the given [predicate] or `null`, if it doesn't.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#takeif-and-takeunless).\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.takeIf(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (predicate(this)) this else null\n}\n\n/**\n * Returns `this` value if it _does not_ satisfy the given [predicate] or `null`, if it does.\n *\n * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#takeif-and-takeunless).\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun T.takeUnless(predicate: (T) -> Boolean): T? {\n contract {\n callsInPlace(predicate, InvocationKind.EXACTLY_ONCE)\n }\n return if (!predicate(this)) this else null\n}\n\n/**\n * Executes the given function [action] specified number of [times].\n *\n * A zero-based index of current iteration is passed as a parameter to [action].\n *\n * @sample samples.misc.ControlFlow.repeat\n */\n@kotlin.internal.InlineOnly\npublic inline fun repeat(times: Int, action: (Int) -> Unit) {\n contract { callsInPlace(action) }\n\n for (index in 0 until times) {\n action(index)\n }\n}\n","/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n// a package is omitted to get declarations directly under the module\n\n@PublishedApi\nexternal internal fun Array(size: Int): Array\n\n@JsName(\"newArray\")\nfun newArray(size: Int, initValue: T) = fillArrayVal(Array(size), initValue)\n\n@JsName(\"newArrayF\")\ninline fun arrayWithFun(size: Int, init: (Int) -> T) = fillArrayFun(Array(size), init)\n\n@JsName(\"fillArray\")\ninline fun fillArrayFun(array: Array, init: (Int) -> T): Array {\n for (i in 0..array.size - 1) {\n array[i] = init(i)\n }\n return array\n}\n\n@JsName(\"booleanArray\")\nfun booleanArray(size: Int, init: dynamic): Array {\n val result: dynamic = Array(size)\n result.`$type$` = \"BooleanArray\"\n return when (init) {\n null, true -> fillArrayVal(result, false)\n false -> result\n else -> fillArrayFun(result, init)\n }\n}\n\n@JsName(\"booleanArrayF\")\ninline fun booleanArrayWithFun(size: Int, init: (Int) -> Boolean): Array = fillArrayFun(booleanArray(size, false), init)\n\n@JsName(\"charArray\")\n@Suppress(\"UNUSED_PARAMETER\")\nfun charArray(size: Int, init: dynamic): Array {\n val result = js(\"new Uint16Array(size)\")\n result.`$type$` = \"CharArray\"\n return when (init) {\n null, true, false -> result // For consistency\n else -> fillArrayFun(result, init)\n }\n}\n\n@JsName(\"charArrayF\")\ninline fun charArrayWithFun(size: Int, init: (Int) -> Char): Array {\n val array = charArray(size, null)\n for (i in 0..array.size - 1) {\n @Suppress(\"UNUSED_VARIABLE\") // used in js block\n val value = init(i)\n js(\"array[i] = value;\")\n }\n return array\n}\n\n@JsName(\"untypedCharArrayF\")\ninline fun untypedCharArrayWithFun(size: Int, init: (Int) -> Char): Array {\n val array = Array(size)\n for (i in 0..array.size - 1) {\n @Suppress(\"UNUSED_VARIABLE\") // used in js block\n val value = init(i)\n js(\"array[i] = value;\")\n }\n return array\n}\n\n@JsName(\"longArray\")\nfun longArray(size: Int, init: dynamic): Array {\n val result: dynamic = Array(size)\n result.`$type$` = \"LongArray\"\n return when (init) {\n null, true -> fillArrayVal(result, 0L)\n false -> result\n else -> fillArrayFun(result, init)\n }\n}\n\n@JsName(\"longArrayF\")\ninline fun longArrayWithFun(size: Int, init: (Int) -> Long): Array = fillArrayFun(longArray(size, false), init)\n\nprivate fun fillArrayVal(array: Array, initValue: T): Array {\n for (i in 0..array.size - 1) {\n array[i] = initValue\n }\n return array\n}",null,null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmName(\"LazyKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin\n\nimport kotlin.reflect.KProperty\n\n/**\n * Represents a value with lazy initialization.\n *\n * To create an instance of [Lazy] use the [lazy] function.\n */\npublic interface Lazy {\n /**\n * Gets the lazily initialized value of the current Lazy instance.\n * Once the value was initialized it must not change during the rest of lifetime of this Lazy instance.\n */\n public val value: T\n\n /**\n * Returns `true` if a value for this Lazy instance has been already initialized, and `false` otherwise.\n * Once this function has returned `true` it stays `true` for the rest of lifetime of this Lazy instance.\n */\n public fun isInitialized(): Boolean\n}\n\n/**\n * Creates a new instance of the [Lazy] that is already initialized with the specified [value].\n */\npublic fun lazyOf(value: T): Lazy = InitializedLazyImpl(value)\n\n/**\n * An extension to delegate a read-only property of type [T] to an instance of [Lazy].\n *\n * This extension allows to use instances of Lazy for property delegation:\n * `val property: String by lazy { initializer }`\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty<*>): T = value\n\n/**\n * Specifies how a [Lazy] instance synchronizes initialization among multiple threads.\n */\npublic enum class LazyThreadSafetyMode {\n\n /**\n * Locks are used to ensure that only a single thread can initialize the [Lazy] instance.\n */\n SYNCHRONIZED,\n\n /**\n * Initializer function can be called several times on concurrent access to uninitialized [Lazy] instance value,\n * but only the first returned value will be used as the value of [Lazy] instance.\n */\n PUBLICATION,\n\n /**\n * No locks are used to synchronize an access to the [Lazy] instance value; if the instance is accessed from multiple threads, its behavior is undefined.\n *\n * This mode should not be used unless the [Lazy] instance is guaranteed never to be initialized from more than one thread.\n */\n NONE,\n}\n\n\ninternal object UNINITIALIZED_VALUE\n\n// internal to be called from lazy in JS\ninternal class UnsafeLazyImpl(initializer: () -> T) : Lazy, Serializable {\n private var initializer: (() -> T)? = initializer\n private var _value: Any? = UNINITIALIZED_VALUE\n\n override val value: T\n get() {\n if (_value === UNINITIALIZED_VALUE) {\n _value = initializer!!()\n initializer = null\n }\n @Suppress(\"UNCHECKED_CAST\")\n return _value as T\n }\n\n override fun isInitialized(): Boolean = _value !== UNINITIALIZED_VALUE\n\n override fun toString(): String = if (isInitialized()) value.toString() else \"Lazy value not initialized yet.\"\n\n private fun writeReplace(): Any = InitializedLazyImpl(value)\n}\n\ninternal class InitializedLazyImpl(override val value: T) : Lazy, Serializable {\n\n override fun isInitialized(): Boolean = true\n\n override fun toString(): String = value.toString()\n\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.text\n\nimport kotlin.js.RegExp\n\n/**\n * Converts the characters in the specified array to a string.\n */\n@SinceKotlin(\"1.2\")\n@Deprecated(\"Use CharArray.concatToString() instead\", ReplaceWith(\"chars.concatToString()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\npublic actual fun String(chars: CharArray): String {\n var result = \"\"\n for (char in chars) {\n result += char\n }\n return result\n}\n\n/**\n * Converts the characters from a portion of the specified array to a string.\n *\n * @throws IndexOutOfBoundsException if either [offset] or [length] are less than zero\n * or `offset + length` is out of [chars] array bounds.\n */\n@SinceKotlin(\"1.2\")\n@Deprecated(\"Use CharArray.concatToString(startIndex, endIndex) instead\", ReplaceWith(\"chars.concatToString(offset, offset + length)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\", errorSince = \"1.5\")\npublic actual fun String(chars: CharArray, offset: Int, length: Int): String {\n if (offset < 0 || length < 0 || chars.size - offset < length)\n throw IndexOutOfBoundsException(\"size: ${chars.size}; offset: $offset; length: $length\")\n var result = \"\"\n for (index in offset until offset + length) {\n result += chars[index]\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] into a String.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun CharArray.concatToString(): String {\n var result = \"\"\n for (char in this) {\n result += char\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] or its subrange into a String.\n *\n * @param startIndex the beginning (inclusive) of the subrange of characters, 0 by default.\n * @param endIndex the end (exclusive) of the subrange of characters, size of this array by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun CharArray.concatToString(startIndex: Int = 0, endIndex: Int = this.size): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n var result = \"\"\n for (index in startIndex until endIndex) {\n result += this[index]\n }\n return result\n}\n\n/**\n * Returns a [CharArray] containing characters of this string.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun String.toCharArray(): CharArray {\n return CharArray(length) { get(it) }\n}\n\n/**\n * Returns a [CharArray] containing characters of this string or its substring.\n *\n * @param startIndex the beginning (inclusive) of the substring, 0 by default.\n * @param endIndex the end (exclusive) of the substring, length of this string by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.toCharArray(startIndex: Int = 0, endIndex: Int = this.length): CharArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return CharArray(endIndex - startIndex) { get(startIndex + it) }\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array.\n *\n * Malformed byte sequences are replaced by the replacement char `\\uFFFD`.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun ByteArray.decodeToString(): String {\n return decodeUtf8(this, 0, size, false)\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array or its subrange.\n *\n * @param startIndex the beginning (inclusive) of the subrange to decode, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to decode, size of this array by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed byte sequence or replace it by the replacement char `\\uFFFD`.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if the byte array contains malformed UTF-8 byte sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun ByteArray.decodeToString(\n startIndex: Int = 0,\n endIndex: Int = this.size,\n throwOnInvalidSequence: Boolean = false\n): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n return decodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Encodes this string to an array of bytes in UTF-8 encoding.\n *\n * Any malformed char sequence is replaced by the replacement byte sequence.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun String.encodeToByteArray(): ByteArray {\n return encodeUtf8(this, 0, length, false)\n}\n\n/**\n * Encodes this string or its substring to an array of bytes in UTF-8 encoding.\n *\n * @param startIndex the beginning (inclusive) of the substring to encode, 0 by default.\n * @param endIndex the end (exclusive) of the substring to encode, length of this string by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed char sequence or replace.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if this string contains malformed char sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.encodeToByteArray(\n startIndex: Int = 0,\n endIndex: Int = this.length,\n throwOnInvalidSequence: Boolean = false\n): ByteArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return encodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Returns a copy of this string converted to upper case using the rules of the default locale.\n */\n@Deprecated(\"Use uppercase() instead.\", ReplaceWith(\"uppercase()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.5\")\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toUpperCase(): String = asDynamic().toUpperCase()\n\n/**\n * Returns a copy of this string converted to upper case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many and many-to-one character mapping,\n * thus the length of the returned string can be different from the length of the original string.\n *\n * @sample samples.text.Strings.uppercase\n */\n@SinceKotlin(\"1.5\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic actual inline fun String.uppercase(): String = asDynamic().toUpperCase()\n\n/**\n * Returns a copy of this string converted to lower case using the rules of the default locale.\n */\n@Deprecated(\"Use lowercase() instead.\", ReplaceWith(\"lowercase()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.5\")\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toLowerCase(): String = asDynamic().toLowerCase()\n\n/**\n * Returns a copy of this string converted to lower case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many and many-to-one character mapping,\n * thus the length of the returned string can be different from the length of the original string.\n *\n * @sample samples.text.Strings.lowercase\n */\n@SinceKotlin(\"1.5\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic actual inline fun String.lowercase(): String = asDynamic().toLowerCase()\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeIndexOf(str: String, fromIndex: Int): Int = asDynamic().indexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeLastIndexOf(str: String, fromIndex: Int): Int = asDynamic().lastIndexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeStartsWith(s: String, position: Int): Boolean = asDynamic().startsWith(s, position)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeEndsWith(s: String): Boolean = asDynamic().endsWith(s)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int): String = asDynamic().substring(startIndex)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int, endIndex: Int): String = asDynamic().substring(startIndex, endIndex)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.concat(str: String): String = asDynamic().concat(str)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.match(regex: String): Array? = asDynamic().match(regex)\n\n//native public fun String.trim(): String\n//TODO: String.replace to implement effective trimLeading and trimTrailing\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeReplace(pattern: RegExp, replacement: String): String = asDynamic().replace(pattern, replacement)\n\n@SinceKotlin(\"1.2\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.compareTo(other: String, ignoreCase: Boolean = false): Int {\n if (ignoreCase) {\n val n1 = this.length\n val n2 = other.length\n val min = minOf(n1, n2)\n if (min == 0) return n1 - n2\n var start = 0\n while (true) {\n val end = minOf(start + 16, min)\n var s1 = this.substring(start, end)\n var s2 = other.substring(start, end)\n if (s1 != s2) {\n s1 = s1.uppercase()\n s2 = s2.uppercase()\n if (s1 != s2) {\n s1 = s1.lowercase()\n s2 = s2.lowercase()\n if (s1 != s2) {\n return s1.compareTo(s2)\n }\n }\n }\n if (end == min) break\n start = end\n }\n return n1 - n2\n } else {\n return compareTo(other)\n }\n}\n\n/**\n * Returns `true` if the contents of this char sequence are equal to the contents of the specified [other],\n * i.e. both char sequences contain the same number of the same characters in the same order.\n *\n * @sample samples.text.Strings.contentEquals\n */\n@SinceKotlin(\"1.5\")\npublic actual infix fun CharSequence?.contentEquals(other: CharSequence?): Boolean = contentEqualsImpl(other)\n\n/**\n * Returns `true` if the contents of this char sequence are equal to the contents of the specified [other], optionally ignoring case difference.\n *\n * @param ignoreCase `true` to ignore character case when comparing contents.\n *\n * @sample samples.text.Strings.contentEquals\n */\n@SinceKotlin(\"1.5\")\npublic actual fun CharSequence?.contentEquals(other: CharSequence?, ignoreCase: Boolean): Boolean {\n return if (ignoreCase)\n this.contentEqualsIgnoreCaseImpl(other)\n else\n this.contentEqualsImpl(other)\n}\n\n\nprivate val STRING_CASE_INSENSITIVE_ORDER = Comparator { a, b -> a.compareTo(b, ignoreCase = true) }\n\n@SinceKotlin(\"1.2\")\npublic actual val String.Companion.CASE_INSENSITIVE_ORDER: Comparator\n get() = STRING_CASE_INSENSITIVE_ORDER\n","/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"MapsKt\")\n@file:OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\nprivate object EmptyMap : Map, Serializable {\n private const val serialVersionUID: Long = 8246714829545688274\n\n override fun equals(other: Any?): Boolean = other is Map<*, *> && other.isEmpty()\n override fun hashCode(): Int = 0\n override fun toString(): String = \"{}\"\n\n override val size: Int get() = 0\n override fun isEmpty(): Boolean = true\n\n override fun containsKey(key: Any?): Boolean = false\n override fun containsValue(value: Nothing): Boolean = false\n override fun get(key: Any?): Nothing? = null\n override val entries: Set> get() = EmptySet\n override val keys: Set get() = EmptySet\n override val values: Collection get() = EmptyList\n\n private fun readResolve(): Any = EmptyMap\n}\n\n/**\n * Returns an empty read-only map of specified type.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\npublic fun emptyMap(): Map = @Suppress(\"UNCHECKED_CAST\") (EmptyMap as Map)\n\n/**\n * Returns a new read-only map with the specified contents, given as a list of pairs\n * where the first value is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * The returned map is serializable (JVM).\n *\n * @sample samples.collections.Maps.Instantiation.mapFromPairs\n */\npublic fun mapOf(vararg pairs: Pair): Map =\n if (pairs.size > 0) pairs.toMap(LinkedHashMap(mapCapacity(pairs.size))) else emptyMap()\n\n/**\n * Returns an empty read-only map.\n *\n * The returned map is serializable (JVM).\n * @sample samples.collections.Maps.Instantiation.emptyReadOnlyMap\n */\n@kotlin.internal.InlineOnly\npublic inline fun mapOf(): Map = emptyMap()\n\n/**\n * Returns an empty new [MutableMap].\n *\n * The returned map preserves the entry iteration order.\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableMapOf(): MutableMap = LinkedHashMap()\n\n/**\n * Returns a new [MutableMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.mutableMapFromPairs\n * @sample samples.collections.Maps.Instantiation.emptyMutableMap\n */\npublic fun mutableMapOf(vararg pairs: Pair): MutableMap =\n LinkedHashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [HashMap].\n *\n * @sample samples.collections.Maps.Instantiation.emptyHashMap\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun hashMapOf(): HashMap = HashMap()\n\n/**\n * Returns a new [HashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * @sample samples.collections.Maps.Instantiation.hashMapFromPairs\n */\npublic fun hashMapOf(vararg pairs: Pair): HashMap = HashMap(mapCapacity(pairs.size)).apply { putAll(pairs) }\n\n/**\n * Returns an empty new [LinkedHashMap].\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun linkedMapOf(): LinkedHashMap = LinkedHashMap()\n\n/**\n * Returns a new [LinkedHashMap] with the specified contents, given as a list of pairs\n * where the first component is the key and the second is the value.\n *\n * If multiple pairs have the same key, the resulting map will contain the value from the last of those pairs.\n *\n * Entries of the map are iterated in the order they were specified.\n *\n * @sample samples.collections.Maps.Instantiation.linkedMapFromPairs\n */\npublic fun linkedMapOf(vararg pairs: Pair): LinkedHashMap = pairs.toMap(LinkedHashMap(mapCapacity(pairs.size)))\n\n/**\n * Builds a new read-only [Map] by populating a [MutableMap] using the given [builderAction]\n * and returning a read-only map with the same key-value pairs.\n *\n * The map passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * Entries of the map are iterated in the order they were added by the [builderAction].\n *\n * @sample samples.collections.Builders.Maps.buildMapSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildMap(@BuilderInference builderAction: MutableMap.() -> Unit): Map {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return buildMapInternal(builderAction)\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal expect inline fun buildMapInternal(builderAction: MutableMap.() -> Unit): Map\n\n/**\n * Builds a new read-only [Map] by populating a [MutableMap] using the given [builderAction]\n * and returning a read-only map with the same key-value pairs.\n *\n * The map passed as a receiver to the [builderAction] is valid only inside that function.\n * Using it outside of the function produces an unspecified behavior.\n *\n * [capacity] is used to hint the expected number of pairs added in the [builderAction].\n *\n * Entries of the map are iterated in the order they were added by the [builderAction].\n *\n * @throws IllegalArgumentException if the given [capacity] is negative.\n *\n * @sample samples.collections.Builders.Maps.buildMapSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildMap(capacity: Int, @BuilderInference builderAction: MutableMap.() -> Unit): Map {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return buildMapInternal(capacity, builderAction)\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal expect inline fun buildMapInternal(capacity: Int, builderAction: MutableMap.() -> Unit): Map\n\n/**\n * Calculate the initial capacity of a map.\n */\n@PublishedApi\ninternal expect fun mapCapacity(expectedSize: Int): Int\n\n/**\n * Returns `true` if this map is not empty.\n * @sample samples.collections.Maps.Usage.mapIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.isNotEmpty(): Boolean = !isEmpty()\n\n/**\n * Returns `true` if this nullable map is either null or empty.\n * @sample samples.collections.Maps.Usage.mapIsNullOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Map?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || isEmpty()\n}\n\n/**\n * Returns the [Map] if its not `null`, or the empty [Map] otherwise.\n *\n * @sample samples.collections.Maps.Usage.mapOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map?.orEmpty(): Map = this ?: emptyMap()\n\n/**\n * Returns this map if it's not empty\n * or the result of calling [defaultValue] function if the map is empty.\n *\n * @sample samples.collections.Maps.Usage.mapIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun M.ifEmpty(defaultValue: () -> R): R where M : Map<*, *>, M : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Checks if the map contains the given key.\n *\n * This method allows to use the `x in map` syntax for checking whether an object is contained in the map.\n *\n * @sample samples.collections.Maps.Usage.containsKey\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map.contains(key: K): Boolean = containsKey(key)\n\n/**\n * Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map.get(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).get(key)\n\n/**\n * Allows to use the index operator for storing values in a mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.set(key: K, value: V): Unit {\n put(key, value)\n}\n\n/**\n * Returns `true` if the map contains the specified [key].\n *\n * Allows to overcome type-safety restriction of `containsKey` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K> Map.containsKey(key: K): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).containsKey(key)\n\n/**\n * Returns `true` if the map maps one or more keys to the specified [value].\n *\n * Allows to overcome type-safety restriction of `containsValue` that requires to pass a value of type `V`.\n *\n * @sample samples.collections.Maps.Usage.containsValue\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning, extension takes precedence in some cases\n@kotlin.internal.InlineOnly\npublic inline fun Map.containsValue(value: V): Boolean = this.containsValue(value)\n\n\n/**\n * Removes the specified key and its corresponding value from this map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n\n * Allows to overcome type-safety restriction of `remove` that requires to pass a key of type `K`.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes K, V> MutableMap.remove(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableMap).remove(key)\n\n/**\n * Returns the key component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.Entry.component1(): K = key\n\n/**\n * Returns the value component of the map entry.\n *\n * This method allows to use destructuring declarations when working with maps, for example:\n * ```\n * for ((key, value) in map) {\n * // do something with the key and the value\n * }\n * ```\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.Entry.component2(): V = value\n\n/**\n * Converts entry to [Pair] with key being first component and value being second.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.Entry.toPair(): Pair = Pair(key, value)\n\n/**\n * Returns the value for the given key, or the result of the [defaultValue] function if there was no entry for the given key.\n *\n * @sample samples.collections.Maps.Usage.getOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.getOrElse(key: K, defaultValue: () -> V): V = get(key) ?: defaultValue()\n\n\ninternal inline fun Map.getOrElseNullable(key: K, defaultValue: () -> V): V {\n val value = get(key)\n if (value == null && !containsKey(key)) {\n return defaultValue()\n } else {\n @Suppress(\"UNCHECKED_CAST\")\n return value as V\n }\n}\n\n/**\n * Returns the value for the given [key] or throws an exception if there is no such key in the map.\n *\n * If the map was created by [withDefault], resorts to its `defaultValue` provider function\n * instead of throwing an exception.\n *\n * @throws NoSuchElementException when the map doesn't contain a value for the specified key and\n * no implicit default value was provided for that map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.getValue(key: K): V = getOrImplicitDefault(key)\n\n/**\n * Returns the value for the given key. If the key is not found in the map, calls the [defaultValue] function,\n * puts its result into the map under the given key and returns it.\n *\n * Note that the operation is not guaranteed to be atomic if the map is being modified concurrently.\n *\n * @sample samples.collections.Maps.Usage.getOrPut\n */\npublic inline fun MutableMap.getOrPut(key: K, defaultValue: () -> V): V {\n val value = get(key)\n return if (value == null) {\n val answer = defaultValue()\n put(key, answer)\n answer\n } else {\n value\n }\n}\n\n/**\n * Returns an [Iterator] over the entries in the [Map].\n *\n * @sample samples.collections.Maps.Usage.forOverEntries\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Map.iterator(): Iterator> = entries.iterator()\n\n/**\n * Returns a [MutableIterator] over the mutable entries in the [MutableMap].\n *\n */\n@kotlin.jvm.JvmName(\"mutableIterator\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.iterator(): MutableIterator> = entries.iterator()\n\n/**\n * Populates the given [destination] map with entries having the keys of this map and the values obtained\n * by applying the [transform] function to each entry in this [Map].\n */\npublic inline fun > Map.mapValuesTo(destination: M, transform: (Map.Entry) -> R): M {\n return entries.associateByTo(destination, { it.key }, transform)\n}\n\n/**\n * Populates the given [destination] map with entries having the keys obtained\n * by applying the [transform] function to each entry in this [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n */\npublic inline fun > Map.mapKeysTo(destination: M, transform: (Map.Entry) -> R): M {\n return entries.associateByTo(destination, transform, { it.value })\n}\n\n/**\n * Puts all the given [pairs] into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Array>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given collection into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Iterable>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Puts all the elements of the given sequence into this [MutableMap] with the first component in the pair being the key and the second the value.\n */\npublic fun MutableMap.putAll(pairs: Sequence>): Unit {\n for ((key, value) in pairs) {\n put(key, value)\n }\n}\n\n/**\n * Returns a new map with entries having the keys of this map and the values obtained by applying the [transform]\n * function to each entry in this [Map].\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapValues\n */\npublic inline fun Map.mapValues(transform: (Map.Entry) -> R): Map {\n return mapValuesTo(LinkedHashMap(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a new Map with entries having the keys obtained by applying the [transform] function to each entry in this\n * [Map] and the values of this map.\n *\n * In case if any two entries are mapped to the equal keys, the value of the latter one will overwrite\n * the value associated with the former one.\n *\n * The returned map preserves the entry iteration order of the original map.\n *\n * @sample samples.collections.Maps.Transformations.mapKeys\n */\npublic inline fun Map.mapKeys(transform: (Map.Entry) -> R): Map {\n return mapKeysTo(LinkedHashMap(mapCapacity(size)), transform) // .optimizeReadOnlyMap()\n}\n\n/**\n * Returns a map containing all key-value pairs with keys matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterKeys\n */\npublic inline fun Map.filterKeys(predicate: (K) -> Boolean): Map {\n val result = LinkedHashMap()\n for (entry in this) {\n if (predicate(entry.key)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n/**\n * Returns a map containing all key-value pairs with values matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterValues\n */\npublic inline fun Map.filterValues(predicate: (V) -> Boolean): Map {\n val result = LinkedHashMap()\n for (entry in this) {\n if (predicate(entry.value)) {\n result.put(entry.key, entry.value)\n }\n }\n return result\n}\n\n\n/**\n * Appends all entries matching the given [predicate] into the mutable map given as [destination] parameter.\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterTo\n */\npublic inline fun > Map.filterTo(destination: M, predicate: (Map.Entry) -> Boolean): M {\n for (element in this) {\n if (predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filter\n */\npublic inline fun Map.filter(predicate: (Map.Entry) -> Boolean): Map {\n return filterTo(LinkedHashMap(), predicate)\n}\n\n/**\n * Appends all entries not matching the given [predicate] into the given [destination].\n *\n * @return the destination map.\n * @sample samples.collections.Maps.Filtering.filterNotTo\n */\npublic inline fun > Map.filterNotTo(destination: M, predicate: (Map.Entry) -> Boolean): M {\n for (element in this) {\n if (!predicate(element)) {\n destination.put(element.key, element.value)\n }\n }\n return destination\n}\n\n/**\n * Returns a new map containing all key-value pairs not matching the given [predicate].\n *\n * The returned map preserves the entry iteration order of the original map.\n * @sample samples.collections.Maps.Filtering.filterNot\n */\npublic inline fun Map.filterNot(predicate: (Map.Entry) -> Boolean): Map {\n return filterNotTo(LinkedHashMap(), predicate)\n}\n\n/**\n * Returns a new map containing all key-value pairs from the given collection of pairs.\n *\n * The returned map preserves the entry iteration order of the original collection.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Iterable>.toMap(): Map {\n if (this is Collection) {\n return when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(if (this is List) this[0] else iterator().next())\n else -> toMap(LinkedHashMap(mapCapacity(size)))\n }\n }\n return toMap(LinkedHashMap()).optimizeReadOnlyMap()\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given collection of pairs.\n */\npublic fun > Iterable>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given array of pairs.\n *\n * The returned map preserves the entry iteration order of the original array.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Array>.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(this[0])\n else -> toMap(LinkedHashMap(mapCapacity(size)))\n}\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given array of pairs.\n */\npublic fun > Array>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new map containing all key-value pairs from the given sequence of pairs.\n *\n * The returned map preserves the entry iteration order of the original sequence.\n * If any of two pairs would have the same key the last one gets added to the map.\n */\npublic fun Sequence>.toMap(): Map = toMap(LinkedHashMap()).optimizeReadOnlyMap()\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given sequence of pairs.\n */\npublic fun > Sequence>.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Returns a new read-only map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMap()\n else -> toMutableMap()\n}\n\n/**\n * Returns a new mutable map containing all key-value pairs from the original map.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic fun Map.toMutableMap(): MutableMap = LinkedHashMap(this)\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given map.\n */\n@SinceKotlin(\"1.1\")\npublic fun > Map.toMap(destination: M): M =\n destination.apply { putAll(this@toMap) }\n\n/**\n * Creates a new read-only map by replacing or adding an entry to this map from a given key-value [pair].\n *\n * The returned map preserves the entry iteration order of the original map.\n * The [pair] is iterated in the end if it has a unique key.\n */\npublic operator fun Map.plus(pair: Pair): Map =\n if (this.isEmpty()) mapOf(pair) else LinkedHashMap(this).apply { put(pair.first, pair.second) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given collection of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] collection.\n */\npublic operator fun Map.plus(pairs: Iterable>): Map =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given array of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] array.\n */\npublic operator fun Map.plus(pairs: Array>): Map =\n if (this.isEmpty()) pairs.toMap() else LinkedHashMap(this).apply { putAll(pairs) }\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from a given sequence of key-value [pairs].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those [pairs] with unique keys are iterated in the end in the order of [pairs] sequence.\n */\npublic operator fun Map.plus(pairs: Sequence>): Map =\n LinkedHashMap(this).apply { putAll(pairs) }.optimizeReadOnlyMap()\n\n/**\n * Creates a new read-only map by replacing or adding entries to this map from another [map].\n *\n * The returned map preserves the entry iteration order of the original map.\n * Those entries of another [map] that are missing in this map are iterated in the end in the order of that [map].\n */\npublic operator fun Map.plus(map: Map): Map =\n LinkedHashMap(this).apply { putAll(map) }\n\n\n/**\n * Appends or replaces the given [pair] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pair: Pair) {\n put(pair.first, pair.second)\n}\n\n/**\n * Appends or replaces all pairs from the given collection of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Iterable>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given array of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Array>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all pairs from the given sequence of [pairs] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(pairs: Sequence>) {\n putAll(pairs)\n}\n\n/**\n * Appends or replaces all entries from the given [map] in this mutable map.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.plusAssign(map: Map) {\n putAll(map)\n}\n\n/**\n * Returns a map containing all entries of the original map except the entry with the given [key].\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(key: K): Map =\n this.toMutableMap().apply { minusAssign(key) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] collection.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Iterable): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] array.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Array): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Returns a map containing all entries of the original map except those entries\n * the keys of which are contained in the given [keys] sequence.\n *\n * The returned map preserves the entry iteration order of the original map.\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Map.minus(keys: Sequence): Map =\n this.toMutableMap().apply { minusAssign(keys) }.optimizeReadOnlyMap()\n\n/**\n * Removes the entry with the given [key] from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(key: K) {\n remove(key)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] collection from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Iterable) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries the keys of which are contained in the given [keys] array from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Array) {\n this.keys.removeAll(keys)\n}\n\n/**\n * Removes all entries from the keys of which are contained in the given [keys] sequence from this mutable map.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableMap.minusAssign(keys: Sequence) {\n this.keys.removeAll(keys)\n}\n\n\n// do not expose for now @PublishedApi\ninternal fun Map.optimizeReadOnlyMap() = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMapOrSelf()\n else -> this\n}\n","/*\n * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\n\nimport kotlin.contracts.contract\nimport kotlin.jvm.JvmName\n\n/**\n * Returns a copy of this string converted to upper case using the rules of the default locale.\n */\n@Deprecated(\"Use uppercase() instead.\", ReplaceWith(\"uppercase()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.5\")\npublic expect fun String.toUpperCase(): String\n\n/**\n * Returns a copy of this string converted to upper case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many and many-to-one character mapping,\n * thus the length of the returned string can be different from the length of the original string.\n *\n * @sample samples.text.Strings.uppercase\n */\n@SinceKotlin(\"1.5\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun String.uppercase(): String\n\n/**\n * Returns a copy of this string converted to lower case using the rules of the default locale.\n */\n@Deprecated(\"Use lowercase() instead.\", ReplaceWith(\"lowercase()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.5\")\npublic expect fun String.toLowerCase(): String\n\n/**\n * Returns a copy of this string converted to lower case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many and many-to-one character mapping,\n * thus the length of the returned string can be different from the length of the original string.\n *\n * @sample samples.text.Strings.lowercase\n */\n@SinceKotlin(\"1.5\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic expect fun String.lowercase(): String\n\n/**\n * Returns a copy of this string having its first letter titlecased using the rules of the default locale,\n * or the original string if it's empty or already starts with a title case letter.\n *\n * The title case of a character is usually the same as its upper case with several exceptions.\n * The particular list of characters with the special title case form depends on the underlying platform.\n *\n * @sample samples.text.Strings.capitalize\n */\n@Deprecated(\"Use replaceFirstChar instead.\", ReplaceWith(\"replaceFirstChar { if (it.isLowerCase()) it.titlecase() else it.toString() }\"))\n@DeprecatedSinceKotlin(warningSince = \"1.5\")\npublic expect fun String.capitalize(): String\n\n/**\n * Returns a copy of this string having its first letter lowercased using the rules of the default locale,\n * or the original string if it's empty or already starts with a lower case letter.\n *\n * @sample samples.text.Strings.decapitalize\n */\n@Deprecated(\"Use replaceFirstChar instead.\", ReplaceWith(\"replaceFirstChar { it.lowercase() }\"))\n@DeprecatedSinceKotlin(warningSince = \"1.5\")\npublic expect fun String.decapitalize(): String\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trim(predicate: (Char) -> Boolean): CharSequence {\n var startIndex = 0\n var endIndex = length - 1\n var startFound = false\n\n while (startIndex <= endIndex) {\n val index = if (!startFound) startIndex else endIndex\n val match = predicate(this[index])\n\n if (!startFound) {\n if (!match)\n startFound = true\n else\n startIndex += 1\n } else {\n if (!match)\n break\n else\n endIndex -= 1\n }\n }\n\n return subSequence(startIndex, endIndex + 1)\n}\n\n/**\n * Returns a string having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trim(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trim(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimStart(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices)\n if (!predicate(this[index]))\n return subSequence(index, length)\n\n return \"\"\n}\n\n/**\n * Returns a string having leading characters matching the [predicate] removed.\n */\npublic inline fun String.trimStart(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimStart(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimEnd(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices.reversed())\n if (!predicate(this[index]))\n return subSequence(0, index + 1)\n\n return \"\"\n}\n\n/**\n * Returns a string having trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trimEnd(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimEnd(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trim(vararg chars: Char): CharSequence = trim { it in chars }\n\n/**\n * Returns a string having leading and trailing characters from the [chars] array removed.\n */\npublic fun String.trim(vararg chars: Char): String = trim { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading characters from the [chars] array removed.\n */\npublic fun CharSequence.trimStart(vararg chars: Char): CharSequence = trimStart { it in chars }\n\n/**\n * Returns a string having leading characters from the [chars] array removed.\n */\npublic fun String.trimStart(vararg chars: Char): String = trimStart { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trimEnd(vararg chars: Char): CharSequence = trimEnd { it in chars }\n\n/**\n * Returns a string having trailing characters from the [chars] array removed.\n */\npublic fun String.trimEnd(vararg chars: Char): String = trimEnd { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing whitespace removed.\n */\npublic fun CharSequence.trim(): CharSequence = trim(Char::isWhitespace)\n\n/**\n * Returns a string having leading and trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trim(): String = (this as CharSequence).trim().toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading whitespace removed.\n */\npublic fun CharSequence.trimStart(): CharSequence = trimStart(Char::isWhitespace)\n\n/**\n * Returns a string having leading whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimStart(): String = (this as CharSequence).trimStart().toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing whitespace removed.\n */\npublic fun CharSequence.trimEnd(): CharSequence = trimEnd(Char::isWhitespace)\n\n/**\n * Returns a string having trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimEnd(): String = (this as CharSequence).trimEnd().toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the beginning\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun CharSequence.padStart(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n sb.append(this)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the beginning with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun String.padStart(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padStart(length, padChar).toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the end\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun CharSequence.padEnd(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n sb.append(this)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the end with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun String.padEnd(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padEnd(length, padChar).toString()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty.\n *\n * @sample samples.text.Strings.stringIsNullOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.length == 0\n}\n\n/**\n * Returns `true` if this char sequence is empty (contains no characters).\n *\n * @sample samples.text.Strings.stringIsEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isEmpty(): Boolean = length == 0\n\n/**\n * Returns `true` if this char sequence is not empty.\n *\n * @sample samples.text.Strings.stringIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotEmpty(): Boolean = length > 0\n\n// implemented differently in JVM and JS\n//public fun String.isBlank(): Boolean = length() == 0 || all { it.isWhitespace() }\n\n\n/**\n * Returns `true` if this char sequence is not empty and contains some characters except of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNotBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotBlank(): Boolean = !isBlank()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty or consists solely of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNullOrBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrBlank(): Boolean {\n contract {\n returns(false) implies (this@isNullOrBlank != null)\n }\n\n return this == null || this.isBlank()\n}\n\n/**\n * Iterator for characters of the given char sequence.\n */\npublic operator fun CharSequence.iterator(): CharIterator = object : CharIterator() {\n private var index = 0\n\n public override fun nextChar(): Char = get(index++)\n\n public override fun hasNext(): Boolean = index < length\n}\n\n/** Returns the string if it is not `null`, or the empty string otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun String?.orEmpty(): String = this ?: \"\"\n\n/**\n * Returns this char sequence if it's not empty\n * or the result of calling [defaultValue] function if the char sequence is empty.\n *\n * @sample samples.text.Strings.stringIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Returns this char sequence if it is not empty and doesn't consist solely of whitespace characters,\n * or the result of calling [defaultValue] function otherwise.\n *\n * @sample samples.text.Strings.stringIfBlank\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifBlank(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isBlank()) defaultValue() else this\n\n/**\n * Returns the range of valid character indices for this char sequence.\n */\npublic val CharSequence.indices: IntRange\n get() = 0..length - 1\n\n/**\n * Returns the index of the last character in the char sequence or -1 if it is empty.\n */\npublic val CharSequence.lastIndex: Int\n get() = this.length - 1\n\n/**\n * Returns `true` if this CharSequence has Unicode surrogate pair at the specified [index].\n */\npublic fun CharSequence.hasSurrogatePairAt(index: Int): Boolean {\n return index in 0..length - 2\n && this[index].isHighSurrogate()\n && this[index + 1].isLowSurrogate()\n}\n\n/**\n * Returns a substring specified by the given [range] of indices.\n */\npublic fun String.substring(range: IntRange): String = substring(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence specified by the given [range] of indices.\n */\npublic fun CharSequence.subSequence(range: IntRange): CharSequence = subSequence(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence.\n *\n * This extension is chosen only for invocation with old-named parameters.\n * Replace parameter names with the same as those of [CharSequence.subSequence].\n */\n@kotlin.internal.InlineOnly\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning\n@Deprecated(\"Use parameters named startIndex and endIndex.\", ReplaceWith(\"subSequence(startIndex = start, endIndex = end)\"))\npublic inline fun String.subSequence(start: Int, end: Int): CharSequence = subSequence(start, end)\n\n/**\n * Returns a substring of chars from a range of this char sequence starting at the [startIndex] and ending right before the [endIndex].\n *\n * @param startIndex the start index (inclusive).\n * @param endIndex the end index (exclusive). If not specified, the length of the char sequence is used.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.substring(startIndex: Int, endIndex: Int = length): String = subSequence(startIndex, endIndex).toString()\n\n/**\n * Returns a substring of chars at indices from the specified [range] of this char sequence.\n */\npublic fun CharSequence.substring(range: IntRange): String = subSequence(range.start, range.endInclusive + 1).toString()\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range\n * is replaced with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\npublic fun CharSequence.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n val sb = StringBuilder()\n sb.appendRange(this, 0, startIndex)\n sb.append(replacement)\n sb.appendRange(this, endIndex, length)\n return sb\n}\n\n/**\n * Replaces the part of the string at the given range with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(startIndex, endIndex, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range]\n * is replaced with the [replacement] char sequence.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\npublic fun CharSequence.replaceRange(range: IntRange, replacement: CharSequence): CharSequence =\n replaceRange(range.start, range.endInclusive + 1, replacement)\n\n/**\n * Replace the part of string at the given [range] with the [replacement] string.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(range: IntRange, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(range, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range is removed.\n *\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\npublic fun CharSequence.removeRange(startIndex: Int, endIndex: Int): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n\n if (endIndex == startIndex)\n return this.subSequence(0, length)\n\n val sb = StringBuilder(length - (endIndex - startIndex))\n sb.appendRange(this, 0, startIndex)\n sb.appendRange(this, endIndex, length)\n return sb\n}\n\n/**\n * Removes the part of a string at a given range.\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(startIndex: Int, endIndex: Int): String =\n (this as CharSequence).removeRange(startIndex, endIndex).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range] is removed.\n *\n * The end index of the [range] is included in the removed part.\n */\npublic fun CharSequence.removeRange(range: IntRange): CharSequence = removeRange(range.start, range.endInclusive + 1)\n\n/**\n * Removes the part of a string at the given [range].\n *\n * The end index of the [range] is included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(range: IntRange): String =\n (this as CharSequence).removeRange(range).toString()\n\n/**\n * If this char sequence starts with the given [prefix], returns a new char sequence\n * with the prefix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removePrefix(prefix: CharSequence): CharSequence {\n if (startsWith(prefix)) {\n return subSequence(prefix.length, length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string starts with the given [prefix], returns a copy of this string\n * with the prefix removed. Otherwise, returns this string.\n */\npublic fun String.removePrefix(prefix: CharSequence): String {\n if (startsWith(prefix)) {\n return substring(prefix.length)\n }\n return this\n}\n\n/**\n * If this char sequence ends with the given [suffix], returns a new char sequence\n * with the suffix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSuffix(suffix: CharSequence): CharSequence {\n if (endsWith(suffix)) {\n return subSequence(0, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string ends with the given [suffix], returns a copy of this string\n * with the suffix removed. Otherwise, returns this string.\n */\npublic fun String.removeSuffix(suffix: CharSequence): String {\n if (endsWith(suffix)) {\n return substring(0, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with the given [prefix] and ends with the given [suffix],\n * returns a new char sequence having both the given [prefix] and [suffix] removed.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(prefix: CharSequence, suffix: CharSequence): CharSequence {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return subSequence(prefix.length, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * Removes from a string both the given [prefix] and [suffix] if and only if\n * it starts with the [prefix] and ends with the [suffix].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(prefix: CharSequence, suffix: CharSequence): String {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return substring(prefix.length, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with and ends with the given [delimiter],\n * returns a new char sequence having this [delimiter] removed both from the start and end.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(delimiter: CharSequence): CharSequence = removeSurrounding(delimiter, delimiter)\n\n/**\n * Removes the given [delimiter] string from both the start and the end of this string\n * if and only if it starts with and ends with the [delimiter].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(delimiter: CharSequence): String = removeSurrounding(delimiter, delimiter)\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n\n// public fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean): String // JVM- and JS-specific\n// public fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean): String // JVM- and JS-specific\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the given [replacement].\n *\n * The [replacement] can consist of any combination of literal text and $-substitutions. To treat the replacement string\n * literally escape it with the [kotlin.text.Regex.Companion.escapeReplacement] method.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, replacement: String): String = regex.replace(this, replacement)\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the result of the given function [transform] that takes [MatchResult] and returns a string to be used as a\n * replacement for that match.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, noinline transform: (MatchResult) -> CharSequence): String =\n regex.replace(this, transform)\n\n/**\n * Replaces the first occurrence of the given regular expression [regex] in this char sequence with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [Regex.replaceFirst] for details.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replaceFirst(regex: Regex, replacement: String): String = regex.replaceFirst(this, replacement)\n\n/**\n * Returns a copy of this string having its first character replaced with the result of the specified [transform],\n * or the original string if it's empty.\n *\n * @param transform function that takes the first character and returns the result of the transform applied to the character.\n *\n * @sample samples.text.Strings.replaceFirstChar\n */\n@SinceKotlin(\"1.5\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@JvmName(\"replaceFirstCharWithChar\")\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceFirstChar(transform: (Char) -> Char): String {\n return if (isNotEmpty()) transform(this[0]) + substring(1) else this\n}\n\n/**\n * Returns a copy of this string having its first character replaced with the result of the specified [transform],\n * or the original string if it's empty.\n *\n * @param transform function that takes the first character and returns the result of the transform applied to the character.\n *\n * @sample samples.text.Strings.replaceFirstChar\n */\n@SinceKotlin(\"1.5\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@JvmName(\"replaceFirstCharWithCharSequence\")\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceFirstChar(transform: (Char) -> CharSequence): String {\n return if (isNotEmpty()) transform(this[0]).toString() + substring(1) else this\n}\n\n\n/**\n * Returns `true` if this char sequence matches the given regular expression.\n */\n@kotlin.internal.InlineOnly\npublic inline infix fun CharSequence.matches(regex: Regex): Boolean = regex.matches(this)\n\n/**\n * Implementation of [regionMatches] for CharSequences.\n * Invoked when it's already known that arguments are not Strings, so that no additional type checks are performed.\n */\ninternal fun CharSequence.regionMatchesImpl(thisOffset: Int, other: CharSequence, otherOffset: Int, length: Int, ignoreCase: Boolean): Boolean {\n if ((otherOffset < 0) || (thisOffset < 0) || (thisOffset > this.length - length) || (otherOffset > other.length - length)) {\n return false\n }\n\n for (index in 0 until length) {\n if (!this[thisOffset + index].equals(other[otherOffset + index], ignoreCase))\n return false\n }\n return true\n}\n\n/**\n * Returns `true` if this char sequence starts with the specified character.\n */\npublic fun CharSequence.startsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[0].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence ends with the specified character.\n */\npublic fun CharSequence.endsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[lastIndex].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix)\n else\n return regionMatchesImpl(0, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if a substring of this char sequence starting at the specified offset [startIndex] starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, startIndex: Int, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix, startIndex)\n else\n return regionMatchesImpl(startIndex, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if this char sequence ends with the specified suffix.\n */\npublic fun CharSequence.endsWith(suffix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && suffix is String)\n return this.endsWith(suffix)\n else\n return regionMatchesImpl(length - suffix.length, suffix, 0, suffix.length, ignoreCase)\n}\n\n\n// common prefix and suffix\n\n/**\n * Returns the longest string `prefix` such that this char sequence and [other] char sequence both start with this prefix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common prefix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonPrefixWith\n */\npublic fun CharSequence.commonPrefixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val shortestLength = minOf(this.length, other.length)\n\n var i = 0\n while (i < shortestLength && this[i].equals(other[i], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(i - 1) || other.hasSurrogatePairAt(i - 1)) {\n i--\n }\n return subSequence(0, i).toString()\n}\n\n/**\n * Returns the longest string `suffix` such that this char sequence and [other] char sequence both end with this suffix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common suffix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonSuffixWith\n */\npublic fun CharSequence.commonSuffixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val thisLength = this.length\n val otherLength = other.length\n val shortestLength = minOf(thisLength, otherLength)\n\n var i = 0\n while (i < shortestLength && this[thisLength - i - 1].equals(other[otherLength - i - 1], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(thisLength - i - 1) || other.hasSurrogatePairAt(otherLength - i - 1)) {\n i--\n }\n return subSequence(thisLength - i, thisLength).toString()\n}\n\n\n// indexOfAny()\n\n/**\n * Finds the index of the first occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.indexOfAny(chars: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeIndexOf(char, startIndex)\n }\n\n for (index in startIndex.coerceAtLeast(0)..lastIndex) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n return -1\n}\n\n/**\n * Finds the index of the last occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the last occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.lastIndexOfAny(chars: CharArray, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeLastIndexOf(char, startIndex)\n }\n\n\n for (index in startIndex.coerceAtMost(lastIndex) downTo 0) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n\n return -1\n}\n\n\nprivate fun CharSequence.indexOf(other: CharSequence, startIndex: Int, endIndex: Int, ignoreCase: Boolean, last: Boolean = false): Int {\n val indices = if (!last)\n startIndex.coerceAtLeast(0)..endIndex.coerceAtMost(length)\n else\n startIndex.coerceAtMost(lastIndex) downTo endIndex.coerceAtLeast(0)\n\n if (this is String && other is String) { // smart cast\n for (index in indices) {\n if (other.regionMatches(0, this, index, other.length, ignoreCase))\n return index\n }\n } else {\n for (index in indices) {\n if (other.regionMatchesImpl(0, this, index, other.length, ignoreCase))\n return index\n }\n }\n return -1\n}\n\nprivate fun CharSequence.findAnyOf(strings: Collection, startIndex: Int, ignoreCase: Boolean, last: Boolean): Pair? {\n if (!ignoreCase && strings.size == 1) {\n val string = strings.single()\n val index = if (!last) indexOf(string, startIndex) else lastIndexOf(string, startIndex)\n return if (index < 0) null else index to string\n }\n\n val indices = if (!last) startIndex.coerceAtLeast(0)..length else startIndex.coerceAtMost(lastIndex) downTo 0\n\n if (this is String) {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatches(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n } else {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatchesImpl(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n }\n\n return null\n}\n\n/**\n * Finds the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the first occurrence of matched string from [strings] and the string matched\n * or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findAnyOf(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = false)\n\n/**\n * Finds the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the last occurrence of matched string from [strings] and the string matched or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findLastAnyOf(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = true)\n\n/**\n * Finds the index of the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.indexOfAny(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = false)?.first ?: -1\n\n/**\n * Finds the index of the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the last occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.lastIndexOfAny(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = true)?.first ?: -1\n\n\n// indexOf\n\n/**\n * Returns the index within this string of the first occurrence of the specified character, starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.indexOf(char: Char, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the first occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of [string] or `-1` if none is found.\n * @sample samples.text.Strings.indexOf\n */\npublic fun CharSequence.indexOf(string: String, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, length, ignoreCase)\n else\n nativeIndexOf(string, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified character,\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the last occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(char: Char, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n lastIndexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeLastIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the last occurrence of [string] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(string: String, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, 0, ignoreCase, last = true)\n else\n nativeLastIndexOf(string, startIndex)\n}\n\n/**\n * Returns `true` if this char sequence contains the specified [other] sequence of characters as a substring.\n *\n * @param ignoreCase `true` to ignore character case when comparing strings. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false): Boolean =\n if (other is String)\n indexOf(other, ignoreCase = ignoreCase) >= 0\n else\n indexOf(other, 0, length, ignoreCase) >= 0\n\n\n\n/**\n * Returns `true` if this char sequence contains the specified character [char].\n *\n * @param ignoreCase `true` to ignore character case when comparing characters. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(char: Char, ignoreCase: Boolean = false): Boolean =\n indexOf(char, ignoreCase = ignoreCase) >= 0\n\n/**\n * Returns `true` if this char sequence contains at least one match of the specified regular expression [regex].\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharSequence.contains(regex: Regex): Boolean = regex.containsMatchIn(this)\n\n\n// rangesDelimitedBy\n\n\nprivate class DelimitedRangesSequence(\n private val input: CharSequence,\n private val startIndex: Int,\n private val limit: Int,\n private val getNextMatch: CharSequence.(currentIndex: Int) -> Pair?\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var currentStartIndex: Int = startIndex.coerceIn(0, input.length)\n var nextSearchIndex: Int = currentStartIndex\n var nextItem: IntRange? = null\n var counter: Int = 0\n\n private fun calcNext() {\n if (nextSearchIndex < 0) {\n nextState = 0\n nextItem = null\n } else {\n if (limit > 0 && ++counter >= limit || nextSearchIndex > input.length) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val match = input.getNextMatch(nextSearchIndex)\n if (match == null) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val (index, length) = match\n nextItem = currentStartIndex until index\n currentStartIndex = index + length\n nextSearchIndex = currentStartIndex + if (length == 0) 1 else 0\n }\n }\n nextState = 1\n }\n }\n\n override fun next(): IntRange {\n if (nextState == -1)\n calcNext()\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem as IntRange\n // Clean next to avoid keeping reference on yielded instance\n nextItem = null\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex ->\n indexOfAny(delimiters, currentIndex, ignoreCase = ignoreCase).let { if (it < 0) null else it to 1 }\n })\n}\n\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: Array, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" } )\n val delimitersList = delimiters.asList()\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex -> findAnyOf(delimitersList, currentIndex, ignoreCase = ignoreCase, last = false)?.let { it.first to it.second.length } })\n\n}\n\n\n// split\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and matches at each position the first element in [delimiters]\n * that is equal to a delimiter in this instance at that position.\n */\npublic fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n val delimiter = delimiters[0]\n if (!delimiter.isEmpty()) {\n return split(delimiter, ignoreCase, limit)\n }\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.split(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n return split(delimiters[0].toString(), ignoreCase, limit)\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiter].\n * This is specialized version of split which receives single non-empty delimiter and offers better performance\n *\n * @param delimiter String used as delimiter\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\nprivate fun CharSequence.split(delimiter: String, ignoreCase: Boolean, limit: Int): List {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n var currentOffset = 0\n var nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n if (nextIndex == -1 || limit == 1) {\n return listOf(this.toString())\n }\n\n val isLimited = limit > 0\n val result = ArrayList(if (isLimited) limit.coerceAtMost(10) else 10)\n do {\n result.add(substring(currentOffset, nextIndex))\n currentOffset = nextIndex + delimiter.length\n // Do not search for next occurrence if we're reaching limit\n if (isLimited && result.size == limit - 1) break\n nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n } while (nextIndex != -1)\n\n result.add(substring(currentOffset, length))\n return result\n}\n\n/**\n * Splits this char sequence around matches of the given regular expression.\n *\n * @param limit Non-negative value specifying the maximum number of substrings to return.\n * Zero by default means no limit is set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.split(regex: Regex, limit: Int = 0): List = regex.split(this, limit)\n\n/**\n * Splits this char sequence to a sequence of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lineSequence(): Sequence = splitToSequence(\"\\r\\n\", \"\\n\", \"\\r\")\n\n/**\n * Splits this char sequence to a list of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lines(): List = lineSequence().toList()\n\n/**\n * Returns `true` if the contents of this char sequence are equal to the contents of the specified [other],\n * i.e. both char sequences contain the same number of the same characters in the same order.\n *\n * @sample samples.text.Strings.contentEquals\n */\n@SinceKotlin(\"1.5\")\npublic expect infix fun CharSequence?.contentEquals(other: CharSequence?): Boolean\n\n/**\n * Returns `true` if the contents of this char sequence are equal to the contents of the specified [other], optionally ignoring case difference.\n *\n * @param ignoreCase `true` to ignore character case when comparing contents.\n *\n * @sample samples.text.Strings.contentEquals\n */\n@SinceKotlin(\"1.5\")\npublic expect fun CharSequence?.contentEquals(other: CharSequence?, ignoreCase: Boolean): Boolean\n\ninternal fun CharSequence?.contentEqualsIgnoreCaseImpl(other: CharSequence?): Boolean {\n if (this is String && other is String) {\n return this.equals(other, ignoreCase = true)\n }\n\n if (this === other) return true\n if (this == null || other == null || this.length != other.length) return false\n\n for (i in 0 until length) {\n if (!this[i].equals(other[i], ignoreCase = true)) {\n return false\n }\n }\n\n return true\n}\n\ninternal fun CharSequence?.contentEqualsImpl(other: CharSequence?): Boolean {\n if (this is String && other is String) {\n return this == other\n }\n\n if (this === other) return true\n if (this == null || other == null || this.length != other.length) return false\n\n for (i in 0 until length) {\n if (this[i] != other[i]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Returns `true` if the content of this string is equal to the word \"true\", `false` if it is equal to \"false\",\n * and throws an exception otherwise.\n *\n * There is also a lenient version of the function available on nullable String, [String?.toBoolean].\n * Note that this function is case-sensitive.\n *\n * @sample samples.text.Strings.toBooleanStrict\n */\n@SinceKotlin(\"1.5\")\npublic fun String.toBooleanStrict(): Boolean = when (this) {\n \"true\" -> true\n \"false\" -> false\n else -> throw IllegalArgumentException(\"The string doesn't represent a boolean value: $this\")\n}\n\n/**\n * Returns `true` if the content of this string is equal to the word \"true\", `false` if it is equal to \"false\",\n * and `null` otherwise.\n *\n * There is also a lenient version of the function available on nullable String, [String?.toBoolean].\n * Note that this function is case-sensitive.\n *\n * @sample samples.text.Strings.toBooleanStrictOrNull\n */\n@SinceKotlin(\"1.5\")\npublic fun String.toBooleanStrictOrNull(): Boolean? = when (this) {\n \"true\" -> true\n \"false\" -> false\n else -> null\n}",null,null,null,null,null,null,null,"/*\n * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\nimport kotlin.random.Random\n\n/**\n * Removes a single instance of the specified element from this\n * collection, if it is present.\n *\n * Allows to overcome type-safety restriction of `remove` that requires to pass an element of type `E`.\n *\n * @return `true` if the element has been successfully removed; `false` if it was not present in the collection.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection.remove(element: T): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).remove(element)\n\n/**\n * Removes all of this collection's elements that are also contained in the specified collection.\n\n * Allows to overcome type-safety restriction of `removeAll` that requires to pass a collection of type `Collection`.\n *\n * @return `true` if any of the specified elements was removed from the collection, `false` if the collection was not modified.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection.removeAll(elements: Collection): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).removeAll(elements)\n\n/**\n * Retains only the elements in this collection that are contained in the specified collection.\n *\n * Allows to overcome type-safety restriction of `retainAll` that requires to pass a collection of type `Collection`.\n *\n * @return `true` if any element was removed from the collection, `false` if the collection was not modified.\n */\n@kotlin.internal.InlineOnly\npublic inline fun <@kotlin.internal.OnlyInputTypes T> MutableCollection.retainAll(elements: Collection): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).retainAll(elements)\n\n/**\n * Adds the specified [element] to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(element: T) {\n this.add(element)\n}\n\n/**\n * Adds all elements of the given [elements] collection to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(elements: Iterable) {\n this.addAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] array to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(elements: Array) {\n this.addAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] sequence to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.plusAssign(elements: Sequence) {\n this.addAll(elements)\n}\n\n/**\n * Removes a single instance of the specified [element] from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(element: T) {\n this.remove(element)\n}\n\n/**\n * Removes all elements contained in the given [elements] collection from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(elements: Iterable) {\n this.removeAll(elements)\n}\n\n/**\n * Removes all elements contained in the given [elements] array from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(elements: Array) {\n this.removeAll(elements)\n}\n\n/**\n * Removes all elements contained in the given [elements] sequence from this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.minusAssign(elements: Sequence) {\n this.removeAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] collection to this [MutableCollection].\n */\npublic fun MutableCollection.addAll(elements: Iterable): Boolean {\n when (elements) {\n is Collection -> return addAll(elements)\n else -> {\n var result: Boolean = false\n for (item in elements)\n if (add(item)) result = true\n return result\n }\n }\n}\n\n/**\n * Adds all elements of the given [elements] sequence to this [MutableCollection].\n */\npublic fun MutableCollection.addAll(elements: Sequence): Boolean {\n var result: Boolean = false\n for (item in elements) {\n if (add(item)) result = true\n }\n return result\n}\n\n/**\n * Adds all elements of the given [elements] array to this [MutableCollection].\n */\npublic fun MutableCollection.addAll(elements: Array): Boolean {\n return addAll(elements.asList())\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] collection.\n */\npublic fun MutableCollection.removeAll(elements: Iterable): Boolean {\n return removeAll(elements.convertToSetForSetOperationWith(this))\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] sequence.\n */\npublic fun MutableCollection.removeAll(elements: Sequence): Boolean {\n val set = elements.toHashSet()\n return set.isNotEmpty() && removeAll(set)\n}\n\n/**\n * Removes all elements from this [MutableCollection] that are also contained in the given [elements] array.\n */\npublic fun MutableCollection.removeAll(elements: Array): Boolean {\n return elements.isNotEmpty() && removeAll(elements.toHashSet())\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] collection.\n */\npublic fun MutableCollection.retainAll(elements: Iterable): Boolean {\n return retainAll(elements.convertToSetForSetOperationWith(this))\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] array.\n */\npublic fun MutableCollection.retainAll(elements: Array): Boolean {\n if (elements.isNotEmpty())\n return retainAll(elements.toHashSet())\n else\n return retainNothing()\n}\n\n/**\n * Retains only elements of this [MutableCollection] that are contained in the given [elements] sequence.\n */\npublic fun MutableCollection.retainAll(elements: Sequence): Boolean {\n val set = elements.toHashSet()\n if (set.isNotEmpty())\n return retainAll(set)\n else\n return retainNothing()\n}\n\nprivate fun MutableCollection<*>.retainNothing(): Boolean {\n val result = isNotEmpty()\n clear()\n return result\n}\n\n\n/**\n * Removes all elements from this [MutableIterable] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when no elements were removed and collection was not modified.\n */\npublic fun MutableIterable.removeAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, true)\n\n/**\n * Retains only elements of this [MutableIterable] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when all elements were retained and collection was not modified.\n */\npublic fun MutableIterable.retainAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, false)\n\nprivate fun MutableIterable.filterInPlace(predicate: (T) -> Boolean, predicateResultToRemove: Boolean): Boolean {\n var result = false\n with(iterator()) {\n while (hasNext())\n if (predicate(next()) == predicateResultToRemove) {\n remove()\n result = true\n }\n }\n return result\n}\n\n\n/**\n * Removes the element at the specified [index] from this list.\n * In Kotlin one should use the [MutableList.removeAt] function instead.\n */\n@Deprecated(\"Use removeAt(index) instead.\", ReplaceWith(\"removeAt(index)\"), level = DeprecationLevel.ERROR)\n@kotlin.internal.InlineOnly\npublic inline fun MutableList.remove(index: Int): T = removeAt(index)\n\n/**\n * Removes the first element from this mutable list and returns that removed element, or throws [NoSuchElementException] if this list is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun MutableList.removeFirst(): T = if (isEmpty()) throw NoSuchElementException(\"List is empty.\") else removeAt(0)\n\n/**\n * Removes the first element from this mutable list and returns that removed element, or returns `null` if this list is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun MutableList.removeFirstOrNull(): T? = if (isEmpty()) null else removeAt(0)\n\n/**\n * Removes the last element from this mutable list and returns that removed element, or throws [NoSuchElementException] if this list is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun MutableList.removeLast(): T = if (isEmpty()) throw NoSuchElementException(\"List is empty.\") else removeAt(lastIndex)\n\n/**\n * Removes the last element from this mutable list and returns that removed element, or returns `null` if this list is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun MutableList.removeLastOrNull(): T? = if (isEmpty()) null else removeAt(lastIndex)\n\n/**\n * Removes all elements from this [MutableList] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when no elements were removed and collection was not modified.\n */\npublic fun MutableList.removeAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, true)\n\n/**\n * Retains only elements of this [MutableList] that match the given [predicate].\n *\n * @return `true` if any element was removed from this collection, or `false` when all elements were retained and collection was not modified.\n */\npublic fun MutableList.retainAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, false)\n\nprivate fun MutableList.filterInPlace(predicate: (T) -> Boolean, predicateResultToRemove: Boolean): Boolean {\n if (this !is RandomAccess)\n return (this as MutableIterable).filterInPlace(predicate, predicateResultToRemove)\n\n var writeIndex: Int = 0\n for (readIndex in 0..lastIndex) {\n val element = this[readIndex]\n if (predicate(element) == predicateResultToRemove)\n continue\n\n if (writeIndex != readIndex)\n this[writeIndex] = element\n\n writeIndex++\n }\n if (writeIndex < size) {\n for (removeIndex in lastIndex downTo writeIndex)\n removeAt(removeIndex)\n\n return true\n } else {\n return false\n }\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.\n * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.\n */\n\npackage kotlin.js\n\n/**\n * Function corresponding to JavaScript's `typeof` operator\n */\n@kotlin.internal.InlineOnly\n@Suppress(\"UNUSED_PARAMETER\")\npublic inline fun jsTypeOf(a: Any?): String = js(\"typeof a\")\n"],"names":[],"mappings":"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AAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WqBnkDuD,OrBmkDzC,IqBnkDyC,EAAO,CAAP,EAAU,CAAV,CrBmkDvD,C;;MqBnkDuC,OrBokDhD,W;IqBpkD+E,C;G;EAC7B,8D;IAAA,mB;MAAa,gBAAX,2B;MrB0/CpD,kBAAM,eAAa,mCAAwB,EAAxB,CAAb,C;MAuEA,Q;MAAA,2B;MAAb,OAAa,cAAb,C;QAAa,sB;QACT,WAAY,WqBlkD+D,OrBkkDjD,IqBlkDiD,EAAO,CAAP,EAAU,CAAV,CrBkkD/D,C;;MqBlkD2C,OrBmkDpD,W;IqBnkDuF,C;G;;;;;;ECdrE,oC;IAEzB,0C;IAF0B,sB;MAAA,+C;IAAA,oB;G;EAE1B,wC;IAAA,4C;IAEI,eAAc,wB;G;;;;;;;EAFlB,oD;IAAA,mD;MAAA,kC;KAAA,4C;G;;;;;;4CAFJ,Y;IAA8B,kB;G;8CAA9B,kB;IAAA,8BAA8B,wCAA9B,C;G;0CAAA,Y;IAAA,OAA8B,2DAA9B,M;G;0CAAA,Y;IAAA,c;IAA8B,uD;IAA9B,a;G;wCAAA,iB;IAAA,2IAA8B,wCAA9B,G;G;EAQA,0C;IAAA,e;IAAA,iB;IAAA,uB;G;EAAA,wC;IAAA,2C;K;IACI,sE;IACA,4E;G;;EADA,gD;IAAA,8B;IAAA,wC;G;;EACA,mD;IAAA,8B;IAAA,2C;G;;;;;;EAFJ,oC;IAAA,0F;G;;EAAA,yC;IAAA,a;MAAA,c;QAAA,6C;MAAA,iB;QAAA,gD;MAAA,QAAA,uE;;G;;4GCRA,yB;IAAA,8B;IhB0D+B,0C;IgB1D/B,2B;MAII,YAAY,wBAAmB,a;MAC/B,U;MACA,UAAU,wBAAmB,a;MACR,gBAAb,MAAM,K;MAAd,OhBmDmC,kBAAS,0BAAiB,SAAjB,C;IgBlDhD,C;GARA,C;gIAUA,yB;IAAA,8B;IAAA,qD;IhBgD+B,0C;IgBhD/B,2B;MAKI,YAAY,wBAAmB,a;MAC/B,aAAa,U;MACb,UAAU,wBAAmB,a;MACD,gBAAb,MAAM,K;MAArB,chBwCmC,kBAAS,0BAAiB,SAAjB,C;MgBvC5C,OAAO,qBAAY,MAAZ,EAAoB,OAApB,C;IACX,C;GAVA,C;EAeyB,mC;IAAC,oB;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B+B,MAAM,eAAM,2BAAqB,O/B2/CtC,I+B3/CsC,EAAO,CAAP,E/B2/CtC,I+B3/CmD,OAAH,GAAY,CAAZ,IAAV,CAArB,CAAZ,GAA6D,G;cApB5F,qB;;cAAA,mBAqBgB,MAAM,eAAM,2B/B0/CF,I+B1/CE,CAAZ,GAAoC,G;cArBpD,qB;;;;;;M/B+gDY,YAAZ,WAAY,mB;;I+BhhDhB,qB/BihDO,W;I+Bt/C0C,kBAAZ,kB;I/Bu7C9B,oBAAa,eAAa,qCAAwB,EAAxB,CAAb,C;IAgCP,oB;IADb,YAAY,C;IACC,+B;IAAb,OAAa,gBAAb,C;MAAa,0B;mBACT,a;MAAgB,cAAU,oBAAmB,gBAAnB,EAAmB,wBAAnB,Y;MAAV,sB;M+Bv9ChB,IAAI,YAAQ,gBAAZ,C;QFkOyE,U;QEjOrE,YFiOqE,UEjOzD,kBFiOyD,WEjOnC,OFiOmC,UEjOrE,GFiOqE,MEjOrE,GAA2C,C;QFiO0B,U;QEhOrE,aFgOqE,UEhOxD,mBFgOwD,WEhOjC,OFgOiC,UEhOrE,GFgOqE,MEhOrE,GAA6C,C;Q7BuT9B,kBAAhB,oB;QC9PP,mBAAc,CAAd,6B;UAvEA,W4BgB4B,gBAAO,KAAP,C;;Q5BhB5B,W4BiBY,gB/Bk9C+C,M+Bl9C/C,C;Q5BsDZ,mBAAc,CAAd,8B;UAvEA,W4BkB6B,gBAAO,IAAP,C;;QANzB,qB5BXG,WDoUqC,W;;Q6BzTxC,qB/Bu9CuD,M;;MAA3C,YAAZ,aAAY,qB;;I+Bx9ChB,aAAyB,WAAM,MAY7B,a/B68CK,a+B78CL,EAAa,EAAb,CAZ6B,GAYV,GAZI,C;G;EA/EzB,uC;IAAA,2C;IACI,4B;G;;;;;;;EADJ,mD;IAAA,kD;MAAA,iC;KAAA,2C;G;EAKkB,oD;IACd,iD;IADe,+B;MAAA,kBAA+B,K;IAA/B,sC;G;EACf,+C;IAAA,mD;IACI,4B;IAGA,eAAc,8BAA0B,KAA1B,C;IACd,qBAAoB,8BAA0B,IAA1B,C;G;;;;;;;EALxB,2D;IAAA,0D;MAAA,yC;KAAA,mD;G;;;;;;mDADJ,Y;IAAmB,2B;G;qDAAnB,2B;IAAA,qCAAmB,mEAAnB,C;G;iDAAA,Y;IAAA,OAAmB,kEAAnB,M;G;iDAAA,Y;IAAA,c;IAAmB,gE;IAAnB,a;G;+CAAA,iB;IAAA,2IAAmB,0DAAnB,G;G;oDAUA,mB;IAAoC,OAAA,IAAK,sBAAe,OAAf,C;G;6CACzC,Y;IAAqB,OAAA,IAAK,sBAAe,YAAQ,cAAuB,IAAvB,CAAvB,C;G;gDAC1B,Y;IAAwB,OAAA,IAAK,sBAAe,YAAQ,cAAuB,KAAvB,CAAvB,C;G;4CA4E7B,uB;IAA+C,OAAC,YAAW,IAAX,C;G;+CAEhD,uB;I5BEO,S4BF4C,YAAW,IAAX,C;IAAD,OAA4B,OAAM,CAAV,UAAuB,E;G;+CAEjG,c;IAGiB,UAEF,MAFE,EAET,M;IAJJ,WAAW,SAAK,EAAL,C;IACX,UAAU,E;IACG,qC;IAAb,OAAa,cAAb,C;MAAa,sB;MACT,WAAW,IAAK,O;MAChB,Y;MAAO,QAAM,IAAN,C;aACH,G;aAAA,I;UAAuB,gBAAV,IAAK,KAAK,EAAO,IAAP,C;UAAvB,K;aACA,G;aAAA,I;UAAuB,gBAAV,IAAK,KAAK,EAAO,IAAP,C;UAAvB,K;aAEA,G;aAAA,I;UAAyC,gBAA5B,oBAAa,IAAK,KAAlB,EAAwB,EAAxB,CAA4B,EAAO,IAAP,C;UAAzC,K;aACA,G;aAAA,I;UAAsC,gBAAzB,iBAAU,IAAK,KAAf,EAAqB,EAArB,CAAyB,EAAO,IAAP,C;UAAtC,K;aAEA,G;aAAA,I;UAAyB,gBAAZ,IAAK,OAAO,EAAO,IAAP,C;UAAzB,K;aACA,G;aAAA,I;UAAyB,gBAAZ,IAAK,OAAO,EAAO,IAAP,C;UAAzB,K;aAEA,G;aAAA,I;aAAA,K;aAAA,M;aAAA,O;aAAA,Q;aAAA,S;aAAA,U;UACI,YAAY,IAAK,Y;UACE,QAAM,IAAiB,Y;UAA1C,mBAAsD,YjCkItB,MAAW,OAAM,CAAN,CiClIW,CAAnC,GAA6C,CAA7C,I;UACnB,IAAI,eAAe,IAAK,OAAxB,C;YAC6B,QAAI,eAAe,IAAK,OAApB,I;YAA6B,qBAAnD,KAAN,GjCoR6B,MAAW,KiCpRrB,IjCoRqB,EAAY,CAAZ,CiCpRiB,C;;YAEhC,gBAAjB,OAAN,KAAM,EAAO,CAAP,CAAT,UAA0B,EAAO,CAAP,EAAU,IAAK,OAAf,C;;;UANlC,K;aASA,G;UAAO,SAAI,IAAK,KAAL,GAAY,EAAhB,GAAoB,IAApB,GAAkC,IAAK,KAAL,GAAY,EAAhB,GAAoB,IAApB,GAA8B,E;UAAnE,K;gBACQ,U;UAAA,IAAS,aAAL,IAAK,EAAW,EAAX,CAAT,C;YAAgC,eAAa,IAAK,OAAL,GAAc,CAAd,I;YAA7C,SAA2B,IH4F6C,WG5F9B,CH4F8B,EAAsB,QAAtB,C;;YG5FxE,SAAmE,I;UAAnE,e;UApBL,K;;MAAP,qB;;IAuBJ,OAAO,G;EACX,C;iDAEA,wB;IAOqB,UACK,MADL,EAaS,M;IAnB1B,kBAAkB,C;IAClB,aAAa,C;IACb,aAAa,C;IACb,WAAW,C;IACX,WAAW,K;IACX,qBAAqB,K;IACJ,OAAJ,UAAI,cAAK,GAAL,C;IAAJ,iB;MAAiB,OAAO,I;KAArC,aAAa,I;IACS,SAAO,IAAP,mBAAO,EAAuB,KAAnB,MAAO,YAAY,EAAK,CAAL,CAAvB,CAAP,W;IAAtB,OAAsB,gBAAtB,C;MAAsB,0B;MAAjB,IAAC,0BAAD;QAAO,2B;MACR,IAAI,KDgJoC,YAAU,CChJlD,C;QAAqB,Q;MACrB,QAAM,IAAN,C;aACI,G;aAAA,I;aAAA,G;aAAA,I;UAAwB,OAAa,MAAN,KAAM,C;UAArC,K;aACA,G;aAAA,I;aAAA,G;aAAA,I;UACI,OAAO,KAAM,MAAN,KAAM,CAAN,EAAmB,EAAnB,C;UACP,iBAAiB,I;UAFrB,K;aAIA,G;aAAA,I;UAAa,SAAe,MAAN,KAAM,C;UAA5B,K;aACA,G;aAAA,I;UAAa,SAAe,MAAN,KAAM,C;UAA5B,K;aACA,G;aAAA,I;aAAA,K;aAAA,M;aAAA,O;aAAA,Q;UACuB,QAAY,SAAN,KAAM,C;UAA/B,mBAA2C,YjCiGX,MAAW,OAAM,CAAN,CiCjGA,CAAxB,GAAkC,CAAlC,I;UACL,IAAI,eAAe,CAAnB,C;YAEH,sBAAN,KAAM,C;YAAkB,QAAI,MAAM,eAAe,CAAf,IAAN,K;YAA0B,qBAAtD,SjCkP6B,MAAW,KiClPrB,IjCkPqB,EAAY,CAAZ,CiClPc,C;;YAEjD,eAAN,KAAM,C;;;UAJV,oB;UAFJ,K;aASA,G;UAAO,OAAO,cAAS,IAAT,C;UAAd,K;gBAjBJ,K;;;IAuBJ,IAAI,kBAAkB,IAAtB,C;MACI,cAAQ,EAAR,I;KAEQ,gBAAL,I;IAAK,axB/HS,kBAAS,mBAAe,SAAf,C;IwB+HH,kBAAP,M;IAAb,iCxBjIgB,kBAAS,qBAAiB,WAAjB,CwBiIzB,C;IAAqC,kBAAP,M;IAA9B,iCxBnIgB,kBAAS,qBAAkB,WAAlB,CwBmIzB,C;IAA2D,kBAAZ,W;IAAtD,OAAO,oBxBrIqB,kBAAS,0BAAsB,WAAtB,CwBqI9B,C;EACX,C;yCAEA,Y;IAAkC,kB;G;;;;;;2CA3KtC,Y;IACI,kB;G;2CADJ,Y;IAEI,mB;G;6CAFJ,2B;IAAA,6BACI,wCADJ,EAEI,2CAFJ,C;G;yCAAA,Y;IAAA,c;IACI,uD;IACA,wD;IAFJ,a;G;uCAAA,iB;IAAA,4IACI,wCADJ,IAEI,0CAFJ,I;G;ECJA,8B;IAAA,kC;G;;;SAO4B,Y;MAAQ,OAAA,2BAAc,MAAM,kB;K;;;;SAK3B,Y;MAAQ,OAAA,2BAAc,MAAM,mB;K;;;;SAK5B,Y;MAAQ,OAAA,2BAAc,MAAM,mB;K;;;;SAK7B,Y;MAAQ,OAAoB,aAApB,2BAAc,MAAM,C;K;;;;SAKjC,Y;MAAQ,OAAA,2BAAc,M;K;;;;;;;;EA3B7C,0C;IAAA,yC;MAAA,wB;KAAA,kC;G;ECAA,6B;IACsC,2BAAc,eAAM,IAAN,C;G;EAEpD,+B;IACoC,2BAAc,eAAW,OAAL,IAAK,CAAX,C;G;ECRnC,uC;IAAC,kC;MAAA,qBAAuC,qB;IAAvC,4C;IACZ,iBAAsB,K;IACtB,qBAA0B,G;IAItB,iB;G;;;SAHc,Y;MAAQ,gC;K;;mCAC1B,Y;IAA+B,qBAAc,Y;G;8BAI7C,Y;IAAc,IACV,a;IADU,IAEV,aAAU,I;IAFA,W;G;6BAId,Y;IAAa,IACT,iBADS,IACK,mB;IADL,IAET,aAAU,K;IAFD,W;G;;;SAIU,Y;MAAQ,OAAI,cAAJ,GAAa,eAAQ,kBAArB,GAAsC,kB;K;;;;SAC7C,Y;MAAQ,iCAAqB,I;K;;;;SAC/B,Y;MAA2B,gBAAnB,uB;MAAA,O3BsCI,kBAAS,yBAAgB,SAAhB,C;K;;E2BxDQ,iC;IAAE,OAAA,gCAAmB,Y;EAAY,C;;;;;;ECQxE,uB;IACf,4B;IADgB,sB;G;EAChB,0B;IAAA,8B;IACO,4B;IAON,0BAAqC,C;IACrC,qBAAgC,I;IAChC,qBAAgC,K;IAChC,mBAA8B,O;G;4CAPxB,6C;IACyB,sB;MAAA,SAAc,C;IAAG,sB;MAAA,SAAc,C;IAAG,2B;MAAA,cAAmB,C;IACnF,gB5BkC0B,kBAAS,mB4BlC9B,I5BkC8B,C4BlC9B,c5BgCuB,kBAAS,qB4BhCnB,M5BgCmB,C4BhChC,e5B8BuB,kBAAS,qB4B9BF,M5B8BE,C4B9BhC,e5B4B4B,kBAAS,0B4B5BU,W5B4BV,C4B5BrC,CAAL,C;G;;;;;;;EANF,sC;IAAA,qC;MAAA,oB;KAAA,8B;G;;;SAcqB,Y;MAAQ,WAAI,CAAC,YAAQ,gBAAR,GAA0B,CAA1B,IAAD,IAA+C,IAAnD,C;K;;;;SAEV,Y;MAAQ,WAAI,CAAC,YAAQ,gBAAR,GAA0B,IAA1B,IAAD,IAA0C,EAA9C,C;K;;;;SAEX,Y;MAAQ,WAAI,CAAC,YAAQ,gBAAR,GAA0B,KAA1B,IAAD,IAA0C,EAA9C,C;K;;;;SAEV,Y;MAAQ,OAAC,YAAQ,gBAAR,GAA0B,OAA1B,I;K;;;;SAED,Y;MAAQ,OAAC,CAAA,YAAQ,gBAAR,GAA0B,OAA1B,QAAsC,E;K;;0BAElE,Y;IACqB,mDAAK,iBAAL,EAAmB,WAAnB,EAA2B,WAA3B,EAAmC,gBAAnC,C;G;kCAErB,kB;IAC6B,OAAmB,SAAnB,kDAAW,MAAX,CAAmB,EAAO,IAAP,C;G;kCAChD,kB;IACiC,OAAO,SAAP,MAAO,EAAO,IAAP,C;G;4BAExC,Y;IAC+B,QAAO,YAAO,CAAX,GAAc,GAAd,GAAuB,EAA1B,IAAoD,SAArB,IAAI,SAAJ,CAAU,WAAW,EAAS,CAAT,EAAY,EAAZ,CAApD,SAA+F,SAAvB,IAAI,WAAJ,CAAY,WAAW,EAAS,CAAT,EAAY,EAAZ,CAA/F,SAA0I,SAAvB,IAAI,WAAJ,CAAY,WAAW,EAAS,CAAT,EAAY,EAAZ,CAA1I,SAA0L,SAA5B,IAAI,gBAAJ,CAAiB,WAAW,EAAS,CAAT,EAAY,EAAZ,C;G;mCAE5N,iB;IAA2C,OAAA,YAAQ,iBAAU,KAAM,QAAhB,C;G;;;;;;;;;4BAxCpD,Y;IAAA,c;IAIiB,wD;IAJjB,a;G;0BAAA,iB;IAAA,2IAIiB,0CAJjB,G;G;EA2CA,iC;IAAyC,gBAAK,SAAK,QAAL,cAAe,IAAf,CAAL,C;G;;IC3CrC,kC;;EAAA,gC;IAAA,oC;IACI,sBAAqB,kDAAW,cAAX,C;IACrB,mBAAkB,kDAAW,UAAX,C;IAElB,eAAc,QAAO,mBAAP,EAAuB,gBAAvB,E;G;iDAEd,gB;IAEmB,Q;IADf,gBAA4B,I;IACb,8B;IAAf,OAAe,cAAf,C;MAAe,wB;;QAEP,OAAc,QAAP,MAAO,EAAM,IAAN,C;;QAChB,gC;UACE,YAAY,C;;UAHhB,O;;;IAMJ,MAAM,wB;EACV,C;kDAEA,mB;IAAuC,6BAAkB,OAAlB,C;G;;;;;;;EAlB3C,4C;IAAA,2C;MAAA,0B;KAAA,oC;G;;;;;;EAsBJ,iC;IACI,Q;IAAA,kCAAS,GAAT,EAAwB,IAAxB,C;IAAA,iB;MAAiC,MAAM,kBAAc,0BAAuB,GAAvB,eAAkC,SAAlC,MAAd,C;KAAvC,W;G;EACJ,mC;IAA8C,gBAAK,mBAAM,GAAN,CAAL,C;G;EAE9C,mC;IAA8C,gC7B8BP,kBAAS,0B6B9BK,I7B8BL,C6B9BF,C;G;EAC9C,mC;IAA4C,gC7BtBP,kBAAS,0B6BsBK,I7BtBiB,WAAtB,C6BsBF,C;G;EAC5C,mC;IAA4C,gCAAO,IAAK,QAAZ,C;G;;IC3BxC,oC;;EAAA,kC;IAAA,sC;G;yCACI,Y;IAA+B,OAAA,gCAAS,M;G;EAGQ,uE;IAAA,wC;G;8DAC5C,Y;IAA+B,8B;G;;;;;oDAFnC,oB;IACgD,gE;G;;;;;;;EAJpD,8C;IAAA,6C;MAAA,4B;KAAA,sC;G;;;;;;mGAUJ,4B;IACI,YAAY,e;IACZ,O;IACA,UAAU,e;IACV,OAAO,kBAAM,KAAN,C;EACX,C;oH9Bf4B,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,yBAAgB,SAAK,WAArB,C;K;GAAjB,C;sHAEC,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,0BAAiB,SAAK,WAAtB,C;K;GAAjB,C;sHAEA,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,0BAAiB,SAAK,WAAtB,C;K;GAAjB,C;4GAEL,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,qBAAa,SAAK,WAAlB,C;K;GAAjB,C;4GAEA,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,qBAAY,SAAK,WAAjB,C;K;GAAjB,C;wGAEF,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,mBAAU,SAAK,WAAf,C;K;GAAjB,C;sGAED,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,kBAAS,SAAK,WAAd,C;K;GAAjB,C;wGAEC,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,mBAAU,SAAK,WAAf,C;K;GAAjB,C;qHAGO,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,yBAAqB,SAArB,C;K;GAAjB,C;uHAEC,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,0BAAsB,SAAtB,C;K;GAAjB,C;uHAEA,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,0BAAsB,SAAtB,C;K;GAAjB,C;6GAEL,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,qBAAkB,SAAlB,C;K;GAAjB,C;6GAEA,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,qBAAiB,SAAjB,C;K;GAAjB,C;yGAEF,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,mBAAe,SAAf,C;K;GAAjB,C;uGAED,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,kBAAc,SAAd,C;K;GAAjB,C;yGAEC,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,mBAAe,SAAf,C;K;GAAjB,C;sHAGI,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,yBAAqB,SAArB,C;K;GAAjB,C;wHAEC,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,0BAAsB,SAAtB,C;K;GAAjB,C;wHAEA,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,0BAAsB,SAAtB,C;K;GAAjB,C;8GAEL,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,qBAAkB,SAAlB,C;K;GAAjB,C;8GAEA,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,qBAAiB,SAAjB,C;K;GAAjB,C;0GAEF,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,mBAAe,SAAf,C;K;GAAjB,C;wGAED,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,kBAAc,SAAd,C;K;GAAjB,C;0GAEC,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,mBAAe,SAAf,C;K;GAAjB,C;sHAGS,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,yBAAgB,SAAhB,C;K;GAAjB,C;wHAEC,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,0BAAiB,SAAjB,C;K;GAAjB,C;wHAEA,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,0BAAiB,SAAjB,C;K;GAAjB,C;8GAEL,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,qBAAa,SAAb,C;K;GAAjB,C;8GAEA,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,qBAAY,SAAZ,C;K;GAAjB,C;0GAEF,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,mBAAU,SAAV,C;K;GAAjB,C;wGAED,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,kBAAS,SAAT,C;K;GAAjB,C;0GAEC,yB;IAAA,0C;IAAA,4B;MAAQ,OAAA,kBAAS,mBAAU,SAAV,C;K;GAAjB,C;EASJ,gC;IAoDhB,gC;IAnDA,gC;G;;;SAIwB,Y;MAAQ,OAAA,IAAK,aAAL,GAAoB,wD;K;;;;SAE5B,Y;MAAQ,OAA4C,YAA3C,IAAK,aAAL,GAAoB,wDAAuB,C;K;;;;SAGnD,Y;MAAQ,OAAA,IAAK,aAAL,GAAoB,yD;K;;;;SAE5B,Y;MAAQ,OAA6C,YAA5C,IAAK,aAAL,GAAoB,yDAAwB,C;K;;;;SAG1D,Y;MAAQ,OAAA,IAAK,aAAL,GAAoB,I;K;;;;SAE5B,Y;MAAQ,OAAA,IAAK,aAAL,GAAoB,K;K;;;;SAE9B,Y;MAAQ,OAAA,IAAK,aAAL,GAAoB,O;K;;;;SAE7B,Y;MAAQ,OAAA,IAAK,aAAL,GAAoB,Q;K;;;;SAE3B,Y;MAAQ,OAAA,IAAK,aAAL,GAAoB,S;K;;;;SAGnB,Y;MAAQ,OAAa,uBAAb,iBAAa,C;K;;;;SAEvB,Y;MAAQ,OAAa,YAAb,iBAAa,C;K;;uCAE9C,iB;IAA+C,OAAkB,iBAAlB,IAAK,aAAa,EAAU,KAAM,aAAhB,C;G;kCAEjE,Y;IAA4B,oBAAS,CAAC,IAAK,aAAf,C;G;iCAC5B,Y;IAA2B,oBAAS,CAAC,IAAK,aAAf,C;G;oCAE3B,iB;IAA+C,oBAAS,IAAK,aAAL,GAAoB,KAAM,aAAnC,C;G;oCAC/C,iB;IAAoD,wBAAa,KAAb,EAAoB,IAApB,C;G;oCACpD,iB;IAAuD,wBAAa,KAAM,UAAnB,EAA8B,KAAM,SAAN,cAAiB,IAAjB,CAA9B,C;G;qCAEvD,iB;IAAgD,yBAAS,KAAD,aAAR,C;G;qCAChD,iB;IAAqD,yBAAS,KAAD,aAAR,C;G;qCACrD,iB;IAAwD,yBAAS,KAAD,aAAR,C;G;qCAExD,iB;IAA2C,oBAAS,IAAK,aAAL,GAAoB,KAA7B,C;G;qCAC3C,iB;IAA8C,oBAAU,IAAK,aAAL,GAAoB,KAA9B,C;G;mCAE9C,iB;IAAyC,oBAAS,IAAK,aAAL,GAAoB,KAA7B,C;G;mCACzC,iB;IAA4C,oBAAU,IAAK,aAAL,GAAoB,KAA9B,C;G;mCAE5C,iB;IAA4C,OAAA,IAAK,aAAL,GAAoB,KAAM,a;G;mCACtE,iB;IAAuF,gBAAxC,IAAK,aAAL,GAAoB,KAAM,a;IAA3B,OArEX,kBAAS,0BAAiB,SAAjB,C;G;EAuE5C,8B;IAAA,kC;IACI,4B;IAGA,gCAA2C,MAAM,M;IACjD,+BAA0C,gCAAyB,M;IAEnE,YAGW,aAAS,GAAT,C;IAEX,WAKU,aAAS,wCAAO,IAAhB,C;IAgBV,mBAAwB,QAAO,EAAP,EAAW,EAAX,EAAe,EAAf,E;G;0DAdxB,c;IAEI,IAD8C,EAC9C,S;MADwC,OACjC,S;;MADiC,OAEhC,aAAS,EAAT,C;G;yDAGZ,a;IAAwD,qCAAiB,IAAI,4BAArB,C;G;0DACxD,a;IAAyD,qCAAiB,IAAI,6BAArB,C;G;qDACzD,a;IAAoD,qCAAiB,IAAI,IAArB,C;G;qDACpD,a;IAAoD,qCAAiB,IAAI,KAArB,C;G;mDACpD,a;IAAkD,qCAAiB,IAAI,OAArB,C;G;kDAClD,a;IAAiD,qCAAiB,IAAI,QAArB,C;G;mDACjD,a;IAAkD,qCAAiB,IAAI,SAArB,C;G;mDAGlD,yC;IAAuD,0B;MAAA,aAAkB,C;IAKnD,IAKO,I;IATV,QAAM,oBAAoB,M;IAAzC,eAAiD,YT6IT,MAAW,OAAM,CAAN,CS7IF,C;IAEjD,URvEwC,kB;IQyExC,aAAU,CAAV,MAAkB,UAAlB,M;MACI,IAAI,OAAK,aAAa,CAAb,IAAL,CAAJ,C;QACI,cAAgB,OAAT,QAAS,EAAO,CAAP,C;QAAhB,G+B3HX,WAAI,OAAJ,C;Q/B4HW,K;OAEiB,iBAAV,gBAAU,EAAU,CAAV,C;MAAV,iB;QAA0B,MAAM,sBAAiB,oBAAkB,gBAAU,KAA5B,WAAjB,C;OAA3C,WAAW,I;MACX,YAAY,WAAW,I;MACvB,sBAAY,IAAZ,I;MACA,gBAAa,OAAN,KAAM,EAAO,CAAP,C;MAAb,G+BjIP,WAAI,SAAJ,C;;I/BoIG,OAAsB,aAAX,SAAJ,GAAI,CAAW,EAAa,GAAb,C;EAC1B,C;sDAEA,0D;IACqD,0B;MAAA,aAAkB,C;IAAG,+B;MAAA,kBAA2B,K;IACjG,mBAA8C,YAA1B,oBAAoB,IAAM,C;IAC9C,UAAU,uBAAgB,iBAAhB,EAAmC,UAAnC,C;IACV,OAAW,eAAJ,GAAuB,GAAF,SAAO,YAA5B,GAA+C,G;EAC1D,C;;;;;;;EA1DJ,0C;IAAA,yC;MAAA,wB;KAAA,kC;G;gCA6DA,Y;IAAkC,OAAgB,YAAb,iBAAa,CAAhB,O;G;;;;;;;;;gCAvHtC,Y;IAAA,c;IAOI,6D;IAPJ,a;G;8BAAA,iB;IAAA,2IAOI,oDAPJ,G;G;EA0HA,8D;IAY0B,0B;MAAA,aAAkB,C;IAAG,+B;MAAA,kBAA2B,K;IACtE,OAAA,gCAAS,sBAAa,sBAAb,EAA2B,UAA3B,EAAuC,eAAvC,C;G;EAEb,qB;IAA8C,UAAI,CAAE,a;IAAN,UAAoB,CAAE,a;IAAc,gBTwKrB,MAAW,KAAI,GAAJ,EAAO,GAAP,C;ISxK1B,OAtJP,kBAAS,0BAAiB,SAAjB,C;G;EAuJhD,qB;IAA8C,UAAI,CAAE,a;IAAN,UAAoB,CAAE,a;IAAc,gBT8JrB,MAAW,KAAI,GAAJ,EAAO,GAAP,C;IS9J1B,OAvJP,kBAAS,0BAAiB,SAAjB,C;G;EAwJhD,sC;IACI,8BAAO,GAAP,M;MADyD,OAC3C,G;SACd,8BAAO,GAAP,M;MAFyD,OAE3C,G;;MAF2C,OAGjD,S;G;sGAEZ,yB;IAAA,0C;IAAA,mC;MAAgE,OAAI,uCAAQ,kBAAS,IAAjB,SAAJ,GAA0B,SAA1B,GAAoC,O;K;GAApG,C;EgCvNwB,uC;IAKvB,qC;IALwB,oC;G;yCAGxB,iB;IAA0C,yBAAc,OAAA,IAAK,eAAL,EAAsB,KAAM,eAA5B,CAAd,C;G;EAE1C,mC;IAAA,uC;IACO,4B;IAGA,eAAc,oBACnB,UhCqC0B,kBAAS,mBgCrCzB,EhCqCyB,CgCrCnC,CADmB,EAEnB,UhCoC0B,kBAAS,mBgCpCzB,EhCoCyB,CgCpCnC,CAFmB,EAGnB,UhCmC0B,kBAAS,mBgCnC1B,ChCmC0B,CgCnCnC,CAHmB,EAInB,UhCkC0B,kBAAS,mBgClC1B,ChCkC0B,CgClCnC,CAJmB,E;G;;;;;;;EAJrB,+C;IAAA,8C;MAAA,6B;KAAA,uC;G;;;;;;EAJA,uC;IAAA,uD;IAAiD,0BAAQ,MAAH,EAAG,CAAR,C;IAAjD,Y;G;uCADD,Y;IAAyB,0B;G;yCAAzB,0B;IAAA,yBAAyB,gEAAzB,C;G;qCAAA,Y;IAAA,OAAyB,sEAAzB,M;G;qCAAA,Y;IAAA,c;IAAyB,+D;IAAzB,a;G;mCAAA,iB;IAAA,2IAAyB,wDAAzB,G;G;ECS0B,2C;IA+BtB,sC;IA9BA,0C;G;;;SAIsB,Y;MAAQ,iCAAqB,G;K;;;;SAG1C,Y;MAA0B,gBAAlB,sB;MAAA,OjCyCkB,kBAAS,0BAAiB,SAAjB,C;K;;;;SiCtCnB,Y;MAAQ,gCAAoB,K;K;;;;SAGjC,Y;MAAQ,OAAa,YAAb,iBAAa,C;K;;;;SAGpB,Y;MAIF,Q;MAHX,WAAe,aAAJ,GAAc,GAAd,GAAuB,G;MAClC,WAAyB,OAAd,0BAAc,EAAO,CAAP,C;MACzB,aAA6B,OAAhB,4BAAgB,EAAO,CAAP,C;MAC7B,OAAO,EAAI,gBAAJ,wBjCeY,kBAAS,qBiCfT,CjCeS,CiCfrB,YAAuB,KAAvB,GAAkC,QAAK,IAAL,GAAU,IAAV,GAAe,M;IAC5D,C;;;;SAGkC,Y;MAAQ,WAAiB,YAAb,iBAAa,CAAjB,C;K;;;;SACd,Y;MAAQ,qCAAuB,EAAvB,I;K;;;;SACN,Y;MAAQ,qCAAuB,E;K;;sCAEjE,Y;IAAkC,oB;G;EAElC,oC;IAAA,wC;IACI,4B;G;sDAGA,gB;IACsC,0BAAe,IAAK,aAApB,C;G;qDAEtC,gB;IAK4C,OAA+C,WAA/C,2BAAc,oCAA2B,IAA3B,CAAiC,C;G;;;;;;;EAZ/F,gD;IAAA,+C;MAAA,8B;KAAA,wC;G;6CAeA,iB;IAAqD,OAAkB,iBAAlB,sBAAkB,EAAU,KAAM,kBAAhB,C;G;;;;;;;;;sCArD3E,Y;IAAA,c;IAQI,kE;IARJ,a;G;oCAAA,iB;IAAA,2IAQI,8DARJ,G;G;EAyDoB,+B;IAAQ,6DAAe,SAAf,C;G;EChDZ,oB;IACZ,4B;IADa,gB;G;EACb,0B;IAAA,8B;IACI,4B;IA0EA,mBAGwB,G;IAExB,iBAGsB,G;IAEtB,0BAAqC,C;IACrC,4BAAuC,E;IACvC,4BAAuC,E;IAEvC,0BAAqC,I;IACrC,4BAAuC,K;IACvC,4BAAuC,M;G;6CAvFvC,gB;IAKsC,IAAI,EAAS,CAAT,oBAAY,IAAZ,CAAJ,C;MAAsB,MAAM,kBAAc,kCAAd,C;IAAzC,W;G;mDAEzB,gB;IAGwC,2BAAO,qBAAQ,IAAR,CAAP,C;G;4CAExC,gB;IAGiC,OAAC,OAAO,CAAP,KAAY,CAAb,KAAoB,OAAO,GAAP,KAAc,CAAd,IAAmB,OAAO,GAAP,KAAc,CAArD,C;G;8CAEjC,gB;IAOI,WAAW,OAAO,MAAP,I;IACX,WAAW,QAAQ,OAAO,MAAP,IAAR,K;IAEA,QAAI,OAAO,KAAP,I;IAAf,W3C+8BwC,MAAW,KAAI,CAAJ,E2C/8BT,C3C+8BS,C;I2C98BnD,WAAW,QAAQ,OAAO,KAAP,IAAR,K;IAEX,SAAS,OAAO,IAAP,I;IACT,SAAS,QAAQ,KAAK,IAAL,IAAR,K;IAEA,UAAI,KAAK,GAAL,I;IAAb,S3Cy8BwC,MAAW,KAAI,GAAJ,E2Cz8BpB,C3Cy8BoB,C;I2Cv8BnD,YAAgB,OAAO,CAAX,GAAc,CAAd,GAAqB,C;IAGjC,OAAO,SAAK,QAAQ,EAAR,IAAc,KAAK,CAAL,IAAd,KAAyB,OAAO,GAAP,IAAzB,KAAwC,OAAO,GAAP,IAAxC,KAAL,C;EACX,C;0CAEA,kB;IAI4B,OAAI,MAAJ,GAAY,GAAZ,GAA2B,G;G;uDAEvD,gB;IAII,IAAI,OAAO,CAAX,C;MAEI,gBAAgB,C;MAChB,QAAQ,C;MACR,OAAO,KAAK,IAAZ,C;QACI,IAAY,CAAR,SAAK,CAAL,CAAQ,QAAZ,C;UAAoB,6B;SACpB,a;;MAEJ,OAAO,S;KAEX,SAAU,OAAO,CAAP,I;IACV,UAAU,CAAC,KAAK,CAAL,IAAD,KAAY,KAAK,GAAL,IAAZ,KAAyB,KAAK,GAAL,IAAzB,K;IACV,OAAO,G;EACX,C;kDAEA,gB;IAGmC,eAAe,OAAO,CAAP,IAAf,SAA2B,+BAAkB,IAAlB,CAA3B,I;G;;;;;;;EAzEvC,sC;IAAA,qC;MAAA,oB;KAAA,8B;G;;;SAiGkB,Y;MAAQ,OAAA,4BAAK,uBAAc,SAAd,C;K;;;;SAKpB,Y;MAAQ,OAAA,4BAAK,gBAAO,SAAP,C;K;;;;SAKV,Y;MAAQ,OAAA,4BAAK,cAAK,WAAL,C;K;;;;SAKA,Y;MAAQ,8DAAkB,SAAlB,C;K;;;;SAKb,Y;MAAQ,yDAAa,SAAb,C;K;;mCAE9B,iB;IAG2C,OAAU,0BAAV,IAAK,KAAK,EAAU,KAAM,KAAhB,C;G;gCAErD,iB;IAAsC,gBAAK,YAAO,KAAP,IAAL,C;G;iCACtC,iB;IAAuC,gBAAK,YAAO,KAAP,IAAL,C;G;iCACvC,iB;IAAuC,OAAA,IAAK,KAAL,GAAY,KAAM,KAAlB,I;G;;;;;;;;;4BAxI3C,Y;IAAA,OASiB,yCATjB,M;G;4BAAA,Y;IAAA,c;IASiB,qD;IATjB,a;G;0BAAA,iB;IAAA,2IASiB,oCATjB,G;G;ECKqB,uC;IACjB,iC;IADkB,oD;G;EAClB,+B;IAAA,mC;IACI,4B;G;iDAGA,uB;IACgD,wDAAU,IAAK,KAAf,EAAqB,KAAM,OAA3B,C;G;+CAChD,uB;IAC+C,wDAAU,IAAV,EAAgB,KAAM,OAAtB,C;G;iDAC/C,wB;IAC8C,qBAAW,QAAS,CAAV,GAAiB,SAAW,EAAtC,C;G;;;;;;;EATlD,2C;IAAA,0C;MAAA,yB;KAAA,mC;G;;;SAae,Y;MAAQ,gBAAK,YAAL,C;K;;;;SAEN,Y;MAAQ,2CAAwB,C;K;;;;SAGhC,Y;MAAQ,iDAAM,WAAN,C;K;;;;SAET,Y;MAAQ,yCAAuB,E;K;;;;SAGjC,Y;MAAQ,OAAA,UAAM,cAAK,SAAL,C;K;;;;SAEP,Y;MAAQ,OAAA,UAAM,qBAAY,SAAZ,C;K;;;;SAEhB,Y;MAAQ,OAAA,UAAM,mBAAU,SAAV,C;K;;qCAEjC,gB;IAEqB,Q;IADjB,eAAe,IAAK,OAAL,GAAmB,aAAL,IAAK,CAAnB,I;IAEX,eAAW,EAAX,C;MAAiB,Q;SACjB,eAAW,CAAX,C;MAAgB,S;;MACR,Q;IAHZ,qB;IAKA,OAAO,iDAAU,SAAK,IAAK,QAAL,GAAoB,YAAL,IAAK,CAApB,GAA4B,UAA5B,IAAL,CAAV,EAAwD,0CAAM,QAAN,CAAxD,C;EACX,C;sCAEA,gB;IAAiD,yBAAS,IAAD,aAAR,C;G;iCAEjD,Y;IAAkC,OAAE,UAAF,oBAAS,Y;G;;;;;;;;;iCAhD/C,Y;IAAA,c;IAMsB,2E;IANtB,a;G;+BAAA,iB;IAAA,2IAMsB,gFANtB,G;G;EAmDA,qC;IAGmC,wDAAU,SAAV,EAAgB,KAAhB,C;G;EAEnC,mC;IAGiC,wDAAU,IAAV,EAAgB,SAAhB,C;G;EC9DjC,6B;G;;;;;;EC8BiC,yC;IAAA,mB;MAAa,e;MAAX,U;IAAqB,C;G;EACxB,2C;IAAA,mB;MAAG,Q;MAAD,OAAiB,0BAAhB,sBAAgB,qB;IAAW,C;G;EAC7B,2C;IAAA,mB;MAAG,Q;MAAD,OAAkB,CAAjB,4EAAiB,Y;IAAW,C;G;EAC7B,2C;IAAA,mB;MAAE,Q;MAAA,4E;IAAkB,C;G;EAC7B,2C;IAAA,mB;MAAa,e;MAAX,U;IAAqB,C;G;EA9BvB,uG;IACtB,oD;IACA,sD;IACA,oC;IACA,8B;G;EAEwB,qD;IAAC,kB;IAAiB,kB;G;;;SACrB,Y;MAAQ,OAAA,UAAM,WAAN,GAAmB,UAAM,W;K;;qDAElD,Y;IAAkC,uCAA6B,iBAA7B,gBAAkD,UAAlD,2BAAgE,UAAhE,iB;G;;;;;;uDAHtC,Y;IAAyB,iB;G;uDAAzB,Y;IAA0C,iB;G;yDAA1C,wB;IAAA,yCAAyB,qCAAzB,EAA0C,qCAA1C,C;G;qDAAA,Y;IAAA,c;IAAyB,sD;IAAiB,sD;IAA1C,a;G;mDAAA,iB;IAAA,4IAAyB,sCAAzB,IAA0C,sCAA1C,I;G;;;SAMoC,Y;MAAQ,gDAAyB,M;K;;;;SAChC,Y;MAAQ,iDAA0B,M;K;;;;SAEvD,Y;MAA+B,gBAAvB,2B;MAAA,OrCdQ,kBAAS,yBAAgB,SAAK,WAArB,C;K;;;;SqCexB,Y;MAAgC,gBAAxB,4B;MAAA,OrCfO,kBAAS,yBAAgB,SAAK,WAArB,C;K;;wCqCiBzC,iB;IAAqC,OAAgB,uBAAf,QAAQ,KAAO,CAAhB,cAA2B,O;G;uCAEhE,Y;IAAkC,OAAG,eAAQ,4BAAR,CAAH,+BAA4C,eAAQ,6BAAR,CAA5C,W;G;;;;;;yCApBtC,Y;IACI,kC;G;yCADJ,Y;IAEI,mC;G;yCAFJ,Y;IAGI,0B;G;yCAHJ,Y;IAII,uB;G;2CAJJ,wF;IAAA,2BACI,wFADJ,EAEI,2FAFJ,EAGI,gEAHJ,EAII,uDAJJ,C;G;uCAAA,Y;IAAA,c;IACI,uE;IACA,wE;IACA,+D;IACA,4D;IAJJ,a;G;qCAAA,iB;IAAA,4IACI,wEADJ,IAEI,0EAFJ,IAGI,wDAHJ,IAII,kDAJJ,I;G;kHAuBA,yB;IAAA,gC;IAAA,8D;IAAA,0B;IAAA,0B;IAAA,8B;IAAA,2F;IAAA,sB;IAAA,iG;IAGiC,yC;MAAA,mB;QAAa,e;QAAX,U;MAAqB,C;K;IACxB,2C;MAAA,mB;QAAG,Q;QAAD,OAAiB,QAAhB,sBAAgB,kC;MAAW,C;K;IAC7B,2C;MAAA,mB;QAAG,Q;QAAD,OAAkB,CAAjB,sEAAiB,Y;MAAW,C;K;IAC7B,2C;MAAA,mB;QAAE,Q;QAAA,uE;MAAkB,C;K;IAC7B,2C;MAAA,mB;QAAa,e;QAAX,U;MAAqB,C;K;IAPjD,kC;gBAEW,M;;MACH,4E;QAAe,mBAAU,uBAAV,C;WACf,4C;QAAc,mBAAU,yBAAV,C;WACd,kC;QAAe,mBAAU,yBAAV,C;WACf,+C;QAAiB,mBAAU,yBAAV,C;;QACT,mBAAU,yBAAV,C;MALZ,a;IAOJ,C;GATA,C;EAWA,6B;IACI,cAAU,GAAV,C;IACA,SAAO,O;IACP,iBAAc,CAAd,WAAiB,CAAjB,U;MACI,YAA4B,Y9C0WkB,MAAW,K8C1W7C,I9C0W6C,E8C1WpC,K9C0WoC,C8C1W7B,C;MrBtChC,YAAY,gCAAmB,a;MqBwCvB,aAAU,CAAV,iB;QACI,SAAO,O;;MrBvCnB,UAAU,gCAAmB,a;MACR,gBAAb,MAAM,K;MqBoCV,WrCe+B,kBAAS,0BAAiB,SAAjB,C;MqCVxC,SAAO,G;MACP,IAAI,qBrCNwB,kBAAS,0BqCMzB,ErCNyB,CqCMjC,MAAJ,C;QAA6B,OAAO,QAA0F,YAAjF,QAAM,OAAN,GAAyB,OAAzB,GAA4C,OAA5C,GAA+D,OAAkB,CAA1F,I;;IAExC,OAAO,U;EACX,C;EAEA,4B;IACI,gBAAgB,e;IAChB,eAAe,G;IACf,YAAY,aAAa,KAAb,C;IACZ,4BAA4B,aAAa,KAAb,C;IAG5B,iBAAiB,kB;IAEjB,aAAU,CAAV,MAAkB,GAAlB,M;MACI,SAAU,Q;MACV,aAAU,CAAV,MAAkB,qBAAlB,M;QAAyC,YAAY,O;MACrD,WAAW,SAAU,mB;MACrB,cAA8B,kCAAmB,uBAAL,IAAK,CAAnB,EAAqD,oBAAvB,qBAAuB,CAArD,C;MAA9B,UNlBC,WAAI,OAAJ,C;;IMqBL,cAAyB,KAAX,UAAW,EAAK,UAAW,KAAX,GAAkB,CAAlB,IAAL,C;I5Ck8ClB,kBAAM,eAAa,wB4Ch8CF,O5Cg8CE,EAAwB,EAAxB,CAAb,C;IAuEA,Q;IAAA,O4CvgDW,O5CugDX,W;IAAb,OAAa,cAAb,C;MAAa,sB;MACT,WAAY,WAAc,I4CxgDW,M5CwgDzB,C;;I4CxgDhB,wBAAiD,I5CygD1C,W4CzgD0C,CAAM,W;I5Cg8ChD,oBAAM,eAAa,wB4C/7CR,O5C+7CQ,EAAwB,EAAxB,CAAb,C;IAuEA,U;IAAA,S4CtgDK,O5CsgDL,W;IAAb,OAAa,gBAAb,C;MAAa,0B;MACT,aAAY,WAAc,M4CvgDK,M5CugDnB,C;;I4CvgDhB,kBAA2C,I5CwgDpC,a4CxgDoC,CAAM,W;I5C+7C1C,oBAAM,eAAa,wB4C97CJ,O5C87CI,EAAwB,EAAxB,CAAb,C;IAuEA,U;IAAA,S4CrgDS,O5CqgDT,W;IAAb,OAAa,gBAAb,C;MAAa,0B;MACT,aAAY,WAAc,M4CtgDS,a5CsgDvB,C;;I4CtgDhB,sBAAsB,cAAgC,U5CugD/C,a4CvgD+C,CAAhC,C;I5C87Cf,oBAAM,eAAa,wB4C77CJ,O5C67CI,EAAwB,EAAxB,CAAb,C;IAuEA,U;IAAA,S4CpgDS,O5CogDT,W;IAAb,OAAa,gBAAb,C;MAAa,0B;MACT,aAAY,WAAc,M4CrgDS,a5CqgDvB,C;;I4CrgDhB,sBAAsB,cAAgC,U5CsgD/C,a4CtgD+C,CAAhC,C;IAGtB,OAAO,oBAC+B,uBAAjC,oBAAoB,WAAa,CAD/B,EAEiC,uBAAnC,kBAAkB,eAAiB,CAFjC,EAGH,OAHG,EAIH,QAJG,C;EAMX,C;4HAEA,yB;IAAA,8C;IA3DA,gC;IAAA,8D;IAAA,0B;IAAA,0B;IAAA,8B;IAAA,2F;IAAA,sB;IAAA,iG;IAGiC,yC;MAAA,mB;QAAa,e;QAAX,U;MAAqB,C;K;IACxB,2C;MAAA,mB;QAAG,Q;QAAD,OAAiB,QAAhB,sBAAgB,kC;MAAW,C;K;IAC7B,2C;MAAA,mB;QAAG,Q;QAAD,OAAkB,CAAjB,sEAAiB,Y;MAAW,C;K;IAC7B,2C;MAAA,mB;QAAE,Q;QAAA,uE;MAAkB,C;K;IAC7B,2C;MAAA,mB;QAAa,e;QAAX,U;MAAqB,C;K;IAoDjD,8C;MAAoD,oB;QAAA,OAAgB,K;MAIlD,Q;;;MA5DV,8E;QAAe,mBAAU,iBAyDN,KAzDM,CAAV,C;WACf,8C;QAAc,mBAAU,mBAwDL,KAxDK,CAAV,C;WACd,oC;QAAe,mBAAU,mBAuDN,KAvDM,CAAV,C;WACf,iD;QAAiB,mBAAU,mBAsDR,KAtDQ,CAAV,C;;QACT,mBAAU,mBAqDC,KArDD,CAAV,C;MAqDZ,mB;MACA,QAAQ,gBAAa,IAAb,YAAsB,MAA9B,C;MACA,IAAI,IAAJ,C;QACc,OAAA,MAAO,eAAP,W;QAAV,OAAU,cAAV,C;UAAU,mB;UAAuB,QAAQ,QAAK,CAAb,C;;OAEzC,C;GANA,C;EAQA,2C;IACmE,oB;MAAA,OAAgB,K;IACzD,Q;IAAtB,wBAAsB,UAAtB,gB;MAAsB,aAAA,UAAtB,M;MAAK,IAAC,0BAAD;QAAO,2B;MANE,U;;;MA5DV,8E;QAAe,qBAAU,iBAmEE,KAnEF,CAAV,C;WACf,8C;QAAc,qBAAU,mBAkEG,KAlEH,CAAV,C;WACd,oC;QAAe,qBAAU,mBAiEE,KAjEF,CAAV,C;WACf,iD;QAAiB,qBAAU,mBAgEA,KAhEA,CAAV,C;;QACT,qBAAU,mBA+DS,KA/DT,CAAV,C;MAqDZ,mB;MACA,QAAQ,gBASW,IATX,YAAsB,MAA9B,C;MACA,IAQyB,IARzB,C;QACc,SAAA,MAAO,eAAP,W;QAAV,OAAU,gBAAV,C;UAAU,qB;UAAuB,QAAQ,QAAK,CAAb,C;;;EASzC,C;;IC5FI,sC;;EAAA,oC;IAAA,wC;G;2CACI,Y;IAAiC,OAAA,gCAAmB,G;G;EAGF,yE;IAAA,wC;G;gEAC9C,Y;IAAiC,8B;G;;;;;sDAFrC,oB;IACkD,kE;G;;;;;;;EAJtD,gD;IAAA,+C;MAAA,8B;KAAA,wC;G;;;;;;ECFY,2B;IAAQ,OAAA,kCAAW,0BAAiB,SAAK,aAAtB,C;G;EAGX,iC;IAAuB,kBAAf,wB;IAAA,OvCgDM,kBAAS,yBAAgB,WAAhB,C;G;EuC3CxB,oC;IACnB,kC;IAD+B,oC;G;EAC/B,gC;IAAA,oC;IACI,YAAW,eAAW,GAAX,C;IACX,WAAU,eAAW,wCAAO,IAAlB,C;G;uCAEV,Y;IAAY,OAAA,gCAAmB,G;G;uDAE/B,iB;IAAiC,sBAAW,MAAM,QAAQ,UAAd,CAAX,C;G;4DACjC,iB;IAAsC,sBAAW,MAAM,QAAQ,OAAd,CAAX,C;G;4DACtC,iB;IAAsC,sBAAW,MAAM,QAAQ,IAAd,CAAX,C;G;2DACtC,iB;IAAqC,sBAAW,MAAM,KAAN,CAAX,C;G;uDAErC,iB;IAA8B,gCAAkB,KAAlB,C;G;4DAC9B,iB;IAAmC,qCAAuB,KAAvB,C;G;4DACnC,iB;IAAmC,qCAAuB,KAAvB,C;G;2DACnC,iB;IAAkC,oCAAsB,KAAtB,C;G;;;;;;;EAdtC,4C;IAAA,2C;MAAA,0B;KAAA,oC;G;;;SAiBsB,Y;MAAQ,OAAC,mB;K;;;;SACR,Y;MAAQ,OAAC,sBAAiB,I;K;;;;SAC1B,Y;MAAQ,OAAC,sBAAiB,O;K;;;;SAC/B,Y;MAAQ,OAAC,sBAAiB,U;K;;;;SAEzB,Y;MAAQ,OAAe,YAAf,mBAAe,C;K;;;;SACtB,Y;MAAQ,OAAmB,YAAnB,uBAAmB,C;K;;;;SAC3B,Y;MAAQ,OAAmB,YAAnB,uBAAmB,C;K;;;;SAChC,Y;MAAQ,OAAc,YAAd,kBAAc,C;K;;sCAErC,iB;IAAmD,kEAAgB,sBAAiB,KAAM,eAAvC,C;G;uCACnD,iB;IAAoD,kEAAgB,sBAAiB,KAAM,eAAvC,C;G;qCACpD,iB;IAAkD,kEAAgB,sBAAiB,KAAM,eAAvC,C;G;uCAClD,iB;IAAgD,kEAAgB,sBAAiB,KAAjC,C;G;uCAChD,iB;IAA6C,kEAAgB,sBAAiB,KAAjC,C;G;qCAC7C,iB;IAA8C,OAAC,sBAAiB,KAAM,e;G;yCACtE,iB;IAAiD,OAAoB,iBAApB,IAAK,eAAe,EAAU,KAAM,eAAhB,C;G;kCAErE,Y;IAAkC,OAAkB,aAAhB,mBAAF,WAAkB,EAAa,IAAb,CAAlB,GAAuC,K;G;;;;;;;;;kCAtC7E,Y;IAAA,c;IAEmC,+D;IAFnC,a;G;gCAAA,iB;IAAA,2IAEmC,wDAFnC,G;G;EAyCA,qB;IAAoD,6C;IAAuC,UAAI,CAAE,e;IAAN,UAAsB,CAAE,e;IAA/D,OAAW,6BhDsUF,MAAW,KAAI,GAAJ,EAAO,GAAP,CgDtUT,C;G;EAC/D,qB;IAAoD,6C;IAAuC,UAAI,CAAE,e;IAAN,UAAsB,CAAE,e;IAA/D,OAAW,6BhD4TF,MAAW,KAAI,GAAJ,EAAO,GAAP,CgD5TT,C;G;EAC/D,sC;IACI,8BAAO,GAAP,M;MADiE,OACnD,G;SACd,8BAAO,GAAP,M;MAFiE,OAEnD,G;;MAFmD,OAGzD,S;G;2GAEZ,yB;IAAA,iD;IAAA,mC;MAAsE,OAAI,uCAAQ,oBAAW,IAAnB,SAAJ,GAA4B,SAA5B,GAAsC,O;K;GAA5G,C;6HC3DA,+B;IAAoE,OAAI,cAAQ,CAAZ,GAAe,UAAf,GAA+B,S;G;qHjCAnG,+B;IAEmC,Q;IAD/B,QAAQ,C;IACR,OAAO,IAAI,cAAX,C;MAAiB,SAAS,uBAAK,QAAL,EAAK,gBAAL,QAAT,C;;EACrB,C;qIFDA,yB;IAK6D,yD;MAAyB,SAAC,GAAD,QAAO,CAAP,I;IAAS,C;IAL/F,qD;MAKC,uB;QAAA,UAA4D,0B;MAG5D,UAAU,S;MACV,WAAW,UAAU,CAAV,I;MAEX,OAAO,OAAO,IAAd,C;QACC,UAAU,CAAC,MAAM,IAAN,IAAD,IAAe,CAAf,I;QACV,WAAW,MAAM,GAAN,C;QAGV,WAAO,CAAP,C;UAAY,MAAM,MAAM,CAAN,I;aAClB,WAAO,CAAP,C;UAAY,OAAO,MAAM,CAAN,I;;UACX,OAAO,G;;MAGjB,OAAO,QAAQ,SAAR,EAAmB,OAAnB,EAA4B,GAA5B,EAAiC,IAAjC,C;IACR,C;GAtBA,C;EAyBkC,4B;IAAC,c;G;;;SACf,Y;MAAQ,mBAAO,C;K;;;;SACnB,Y;MAAQ,OAAI,UAAJ,GAAW,QAAX,GAAoB,E;K;;;;SACxB,Y;MAAQ,OAAI,UAAJ,GAAW,QAAX,GAAoB,EAAC,QAAD,QAAO,CAAP,I;K;;;;;;;;;;qCAJhD,Y;IAAA,OACmC,gDADnC,M;G;qCAAA,Y;IAAA,c;IACmC,oD;IADnC,a;G;mCAAA,iB;IAAA,2IACmC,kCADnC,G;G;EoC1BA,mC;InBiWW,Q;IADP,YmB/VA,SnB+VY,WmB/VE,GnB+VF,C;IACL,IAAI,aAAJ,C;MACH,amBjWiB,C;MAArB,SnBkWI,amBlWU,GnBkWV,EAAS,MAAT,C;MACA,a;;MAEA,Y;;ImBpWJ,cAAY,kCAAK,GAAL,KAAc,CAAd,I;IAAZ,SnBmPA,amBnPK,GnBmPL,EAAS,OAAT,C;EmBlPJ,C;ErBD6B,qC;IAAkB,sB;MAAA,SAAkB,C;IAAnC,c;IAAiB,oB;G;;;SAChC,Y;MAAQ,OAAA,QAAI,O;K;;;;SACT,Y;MAAQ,OAAA,QAAI,OAAJ,GAAa,WAAb,I;K;;;;SACV,Y;MAAQ,qBAAS,QAAI,O;K;;;;SAC5B,Y;MAAQ,QAAC,Y;K;;6JACjB,oB;IACC,YAAY,IAAK,O;IACjB,U;IACA,UAAU,IAAK,O;IACf,OAAO,IAAK,ICuNkF,WDvNpE,KCuNoE,EDvN7D,GCuN6D,C;EDtN/F,C;4CACA,Y;IAA6B,OAAI,YAAJ,GAAa,oBAAI,WAAJ,CAAb,GAA8B,C;G;sCACxD,Y;IAAuB,uCAAI,WAAJ,E;G;sCACvB,Y;IAA2B,Q;IAAJ,wCAAI,kBAAJ,EAAI,0BAAJ,S;G;6CAC1B,oB;IACC,IAAI,YAAO,+BAAc,QAAzB,C;MAAmC,OAAO,K;IAC1C,e;IACA,OAAO,I;EACR,C;mDACG,oB;IACI,OAAW,qBAAQ,QAAR,CAAJ,GAAuB,QAAvB,GAAqC,I;EAChD,C;6CACA,oB;IAEuB,UAAT,MAAS,EAAT,MAAS,EAAT,M;IADV,IAAI,QAAS,OAAT,GAAkB,cAAtB,C;MAAiC,OAAO,K;IACrB,mBAAT,QAAS,C;IAAT,mB;IAAA,kB;IAAA,kB;IAAV,8C;MAA4B,IAAI,IAAK,IAAL,YAAS,cAAS,CAAT,IAAT,MAAwB,oBAAS,CAAT,CAA5B,C;QAAyC,OAAO,K;IAC5E,4BAAU,QAAS,OAAnB,I;IACA,OAAO,I;EACX,C;0CACA,iB;IAAwC,gBAAT,IAAK,I;IAAI,iBAAU,W;IAAV,eAAmC,aAAhB,cAAS,KAAT,IAAgB,EAAa,WAAb,C;IAAsB,kBCoMjB,SAAY,WAAU,UAAV,EAAsB,QAAtB,C;IDpMY,cAAK,WAAL,GxBiElG,WwBjEoH,OAAlB,I;IAAzE,OxBkExB,W;G;2CwBjEV,Y;IAA8B,yBAAK,cAAL,C;G;6CAC3B,iB;IAA+B,OAAY,MAAZ,kBAAK,KAAL,CAAY,C;G;gDAC3C,iB;IAAmC,OAAY,YAAZ,kBAAK,KAAL,CAAY,C;G;mDAC/C,iB;IAAyC,OAA8B,eAAlB,QAAZ,kBAAK,KAAL,CAAY,EAAQ,EAAR,EAAa,EAAb,CAAkB,C;G;2CAEvE,Y;IACI,eAAe,C;IACf,UAAU,C;IACV,eAAe,C;IACf,UAAU,C;IACV,eAAe,K;UACV,OAAO,YAAP,C;MACK,SAAS,0B;MACX,c;QACI,IAAI,aAAY,CAAhB,C;UACI,OAAO,I;SAEX,WAAW,I;QACX,e;aAEJ,KAAG,kBAAK,EAAL,CAAH,uB;QACI,QAAQ,0B;QACR,IAAI,QAAJ,C;UACI,2B;UACA,YAAO,EAAP,I;UACA,aAAQ,IAAI,EAAZ,K;;UAEA,2B;UACA,YAAO,EAAP,I;UACA,aAAQ,IAAI,EAAZ,K;;;QAIJ,U;;;IAIZ,IAAI,aAAY,CAAhB,C;MACI,OAAO,I;KAEA,c;IAAkB,gB;IAAkB,QAAI,CAAC,QAAD,I;IAAnD,OAAO,OAAkB,S7B6UqB,MAAW,K6B7Uf,I7B6Ue,EAAY,CAAZ,C;E6B5U7D,C;;;;;;EsBtEgC,gC;IAAQ,OnDiTQ,MAAW,OmDjTT,SnDiTS,CmDjTf,KAAe,SAAnB,GAAiC,YAAL,SAAK,CAAR,WAAzB,GAAkD,SAAF,W;G;ECA5F,wB;IACI,YAAY,kCAAW,M;IACvB,OAAO,kCAAW,MAAX,eAAmB,KAAnB,kBAA2B,IAA3B,KAAP,C;;EACJ,C;ECAA,gD;IAA+C,uB;MAAA,UAAyB,qCAAc,Q;IAE3D,UAWwB,MAXxB,EAY0B,M;IAbjD,aAAa,S;IACU,OAAA,OAAQ,etByWqD,QAAQ,W;IsBzW5F,OAAuB,cAAvB,C;MAAuB,wB;MAAjB,WtB4R0D,U;MsB5RpD,atBySoD,Y;MsBxS5D,IAAI,aAAQ,KAAR,KAAiB,aAAQ,KAAR,CAArB,C;QAAoC,Q;MACpC,IAAI,MAAO,iBAAQ,IAAR,CAAX,C;QAA0B,OAAO,M;;IAErC,IAAI,MAAO,iBAAQ,EAAR,CAAX,C;MAAyB,O5CoCE,kBAAS,qB4CpCJ,C5CoCI,C;K4CnCpC,WAAW,C;IACX,MAAO,iBAAQ,KAAR,C;IACP,MAAO,iBAAQ,KAAR,C;IACP,IAAI,MAAO,iBAAQ,GAAR,CAAX,C;MAAyB,OAAO,C;IAChC,IAAI,MAAO,iBAAQ,GAAR,CAAX,C;MAAyB,OAAO,E;IAChC,WAAkC,UAAvB,MAAO,gBAAgB,EAAQ,GAAR,EAAa,EAAb,C;IACa,qBAAjB,SAAb,OAAL,IAAK,EAAO,CAAP,EAAU,CAAV,CAAa,EAAS,CAAT,EAAY,EAAZ,CAAiB,C;IAAnC,mB;MAAoD,OAAO,I;KAAvE,YAAY,M;IACqC,qBAAjB,SAAb,OAAL,IAAK,EAAO,CAAP,EAAU,CAAV,CAAa,EAAS,CAAT,EAAY,EAAZ,CAAiB,C;IAAnC,mB;MAAoD,OAAO,I;KAAzE,cAAc,M;IACd,c5C6ByB,kBAAS,mB4C7BpB,K5C6BoB,C4C7BpB,c5C2Ba,kBAAS,qB4C3BR,O5C2BQ,C4C3BtB,C;IACd,OAAW,OAAO,CAAX,GAAe,OAAD,YAAd,GAA6B,OAAD,a;EACvC,C;;;;;;ECdA,kC;IAGW,Q;IADP,UAAwC,StDqgCY,IsDrgC1C,StDqgC0C,CsDrgCvB,WAAW,EAAS,KAAT,EAAgB,EAAhB,C;IACjC,IAAI,YAAO,CAAX,C;MAAc,OAAO,MAAG,G;;MAAU,U;IAAzC,W;EACJ,C;EACA,iD;IACI,cAA0B,YtDqSsB,MAAW,OsDrSvC,StDqSuC,CsDrSjC,C;IAC1B,cAA2D,YAA7C,MAAM,CAAC,YAAO,OAAR,ItDqY8B,MAAW,KsDrYtB,ItDqYsB,EsDrYb,QtDqYa,CsDrY/C,CAA6C,C;IAC3D,OAAmC,OAAjB,OAAR,OAAQ,EAAO,QAAP,CAAiB,EAAO,CAAC,QAAD,IAAP,EAAkB,QAAlB,CAA5B,SAAoG,OAAtB,OAAnB,OAAQ,WAAW,EAAO,QAAP,EAAiB,EAAjB,CAAsB,EAAO,CAAP,EAAU,QAAV,C;EAC/G,C;EAEA,0C;IACI,UAA2D,QAA5C,SAAS,CAAb,GAAgB,KAAhB,GAA2B,SAAK,OAAL,GAAc,KAAd,IAAqB,EAAM,CAAN,EAAS,SAAK,OAAd,C;IAC3D,WAAqE,QAArD,UAAU,CAAd,GAAiB,MAAM,MAAN,IAAjB,GAAmC,SAAK,OAAL,GAAc,MAAd,IAAsB,EAAM,CAAN,EAAS,SAAK,OAAd,C;IACrE,OAAW,OAAO,GAAlB,GAAuB,EAAvB,GAA+B,SxB4M6D,WwB5M9C,GxB4M8C,EwB5MzC,IxB4MyC,C;EwB3MhG,C;EAEA,sC;IAAkD,OAAI,YAAO,GAAX,GAAgB,GAAhB,GAA6B,YAAO,GAAX,GAAgB,GAAhB,GAAyB,S;G;EACpG,oC;IAAkD,OAAC,KAAC,YAAO,GAAP,IAAD,EAAmB,MAAM,GAAN,GAAY,CAAZ,IAAnB,CAAD,GAAsC,GAAtC,I;G;EAClD,yC;IAAuD,QAAC,YAAO,GAAP,IAAD,KAAgB,MAAM,GAAN,GAAY,CAAZ,IAAhB,K;G;EAEvD,qC;IAIiB,Q;IAHb,UAAU,S;IACV,UrDkEgD,kB;IqDjEhD,cAAc,C;IACD,OAAA,KAAM,iBAAQ,SAAR,CAAN,W;IAAb,OAAa,cAAb,C;MAAa,sB;MACT,aAAa,IAAK,M;MAClB,IAAI,YAAW,MAAO,MAAtB,C;QACe,iBAAU,O;QAAV,eAAmB,MAAO,M;QAArC,cAAO,GxB8L6E,WAAU,UAAV,EAAsB,QAAtB,C;QwB9LpF,GdaH,WAAI,OAAJ,C;OcXD,gBAAW,UAAJ,GAAI,EAAU,MAAV,C;MAAX,GdWC,WAAI,SAAJ,C;McVD,UAAU,MAAO,aAAP,GAAsB,CAAtB,I;;IAEd,IAAI,YAAW,GAAI,OAAnB,C;MACe,mBAAU,O;MAArB,gBAAO,GxBqLkE,WAAU,YAAV,C;MwBrLzE,GdOC,WAAI,SAAJ,C;KcLL,OAAO,G;EACX,C;EAEA,+B;IAEW,Q;IADP,gBAAgB,YAAO,I;IAEnB,gBAAY,CAAZ,C;MAAiB,mBAAY,IAAZ,I;;MACT,gB;IAFZ,W;EAIJ,C;EAEA,iC;IAEW,Q;IADP,gBAAgB,YAAO,I;IAEnB,gBAAY,CAAZ,C;MAAiB,mBAAY,I;;MACrB,gB;IAFZ,W;EAIJ,C;EAEA,2B;IAAoC,OAAI,YAAO,GAAX,GAA4B,YtDoPZ,MAAW,OsDpPL,StDoPK,CsDpPC,CAA5B,GAA8C,YAAL,SAAK,C;G;EAClF,kC;IAA8C,OAA2B,OAA1B,kBAAc,GAAd,CAA0B,C;G;EAEzE,gC;IACI,gBAAO,CAAP,IAAY,YAAO,KAAP,KAAgB,CAA5B,C;MAD2C,OACV,YAAO,KAAP,I;;MADU,OAEnC,CAAC,YAAO,KAAP,IAAD,IAAiB,CAAjB,I;G;EAGU,wB;IAAC,kB;IACE,QAAI,U;IAAzB,gBtDkR8C,MAAW,KAAI,CAAJ,C;IsDjRtC,UAAK,U;IAAxB,ctD8R+C,MAAW,MAAK,GAAL,C;G;qCsD5R1D,iB;IACI,UAAW,gBAAS,K;IACpB,iBAAU,K;IACV,OtDqO4C,MAAW,OsDrO1C,GtDqO0C,CsDrOhD,GAAa,W;EACxB,C;qCACA,iB;IAAiC,2BAAa,KAAb,C;G;qCACjC,iB;IAAmC,2BAAa,KAAb,C;G;kCAEnC,iB;IAA8B,OAAc,YAAd,oBAAO,KAAP,CAAc,C;G;kCAC5C,iB;IAA2B,wBAAU,KAAV,C;G;kCAC3B,iB;IAA6B,wBAAU,KAAV,C;G;;;;;;EAGjC,kC;IAAkD,QAAM,YAAO,K;IAAb,OtD2NE,MAAW,OAAM,CAAN,C;G;EuD/S/D,6B;IAA4B,uB;MAAA,UAAe,C;IAAK,O9C6CnB,kBAAS,mB8C7CU,K9C6CV,C8C7CU,c9C2CjB,kBAAS,qB8C3CsB,O9C2CtB,C8C3CQ,C;G;;ECDf,+B;IAAQ,gD;G;EAEzC,6B;IACC,yC;IAD8B,sB;IAG9B,0BAAwB,I;IAExB,2BAAyB,QAAO,OAAP,EAAgB,QAAhB,E;IAEzB,8D;IAEA,4BAA0B,QACzB,SADyB,EACd,QADc,EACJ,UADI,EACQ,UADR,EACoB,YADpB,EACkC,SADlC,EAC6C,SAD7C,E;IAG1B,wBAAsB,QACrB,QADqB,EACX,SADW,EACA,SADA,EACQ,OADR,EACiB,KADjB,EACwB,MADxB,EAErB,MAFqB,EAEb,QAFa,EAEH,WAFG,EAEU,SAFV,EAEqB,UAFrB,EAEiC,UAFjC,E;IAKtB,sCAAoC,oBAAO,kBAAP,C;IACpC,qCAAmC,oBAAO,gBAAP,C;IAEnC,gCAA8B,oBAAO,iBAAP,C;IAC9B,gCAA8B,oBAAO,WAAP,C;IAC9B,iCAAgC,oBAAO,SAAP,C;IAChC,iCAA+B,oBAAO,UAAP,C;IAE/B,kCAAgC,oBAAO,UAAP,C;IAChC,iCAA+B,oBAAO,OAAP,C;G;EAzB/B,uC;IAAA,2C;IAAmB,4B;G;;;;;;;EAAnB,mD;IAAA,kD;MAAA,iC;KAAA,2C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,+B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAGA,Y;MAAA,4B;K;;;;SAKA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,qC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;EC5BiC,gC;IAAQ,iD;G;EAE1C,8B;IACC,0C;IAD+B,sB;IAG/B,0BAAwB,I;IAExB,2BAAyB,QAAO,MAAP,EAAe,MAAf,E;IAEzB,8D;IAEA,4BAA0B,QACzB,SADyB,EACd,OADc,EACL,QADK,EACK,cADL,EACkB,QADlB,EAC4B,SAD5B,EACuC,WADvC,E;IAG1B,wBAAsB,QACrB,OADqB,EACZ,SADY,EACD,OADC,EACQ,OADR,EACiB,MADjB,EACyB,OADzB,EAErB,OAFqB,EAEZ,QAFY,EAEF,YAFE,EAEY,SAFZ,EAEuB,WAFvB,EAEoC,WAFpC,E;IAKtB,sCAAoC,oBAAO,qBAAP,C;IACpC,qCAAmC,oBAAO,gBAAP,C;IAEnC,gCAA8B,oBAAO,0BAAP,C;IAC9B,gCAA8B,oBAAO,oBAAP,C;IAC9B,kCAAgC,oBAAO,YAAP,C;IAChC,iCAA+B,oBAAO,UAAP,C;IAE/B,kCAAgC,oBAAO,UAAP,C;IAChC,iCAA+B,oBAAO,OAAP,C;G;EAzB/B,wC;IAAA,4C;IAAmB,6B;G;;;;;;;EAAnB,oD;IAAA,mD;MAAA,kC;KAAA,4C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,+B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAGA,Y;MAAA,4B;K;;;;SAKA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;EC5BgC,+B;IAAQ,gD;G;EAEzC,6B;IACC,yC;IAD8B,sB;IAG9B,0BAAwB,I;IAExB,2BAAyB,QAAO,IAAP,EAAa,IAAb,E;IAEzB,8D;IAEA,4BAA0B,QACzB,UADyB,EACb,OADa,EACJ,OADI,EACK,UADL,EACiB,OADjB,EAC0B,UAD1B,EACsC,QADtC,E;IAG1B,wBAAsB,QACrB,SADqB,EAErB,YAFqB,EAGrB,MAHqB,EAIrB,OAJqB,EAKrB,KALqB,EAMrB,MANqB,EAOrB,SAPqB,EAQrB,SARqB,EASrB,WATqB,EAUrB,SAVqB,EAWrB,UAXqB,EAYrB,aAZqB,E;IAetB,sCAAoC,oBAAO,kBAAP,C;IACpC,qCAAmC,oBAAO,eAAP,C;IAEnC,gCAA8B,oBAAO,eAAP,C;IAC9B,gCAA8B,oBAAO,UAAP,C;IAC9B,iCAAgC,oBAAO,SAAP,C;IAChC,iCAA+B,oBAAO,SAAP,C;IAE/B,kCAAgC,oBAAO,UAAP,C;IAChC,iCAA+B,oBAAO,OAAP,C;G;EAnC/B,uC;IAAA,2C;IAAmB,4B;G;;;;;;;EAAnB,mD;IAAA,kD;MAAA,iC;KAAA,2C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,+B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAGA,Y;MAAA,4B;K;;;;SAeA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,qC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;ECtCiC,gC;IAAQ,iD;G;EAE1C,8B;IACC,0C;IAD+B,sB;IAG/B,0BAAwB,I;IAExB,2BAAyB,QAAO,IAAP,EAAa,IAAb,E;IAEzB,8D;IAEA,4BAA0B,QACzB,UADyB,EACb,WADa,EACH,YADG,EACQ,cADR,EACqB,YADrB,EACgC,YADhC,EAC2C,QAD3C,E;IAG1B,wBAAsB,QACrB,SADqB,EACV,UADU,EACE,OADF,EACW,QADX,EACqB,QADrB,EAC+B,QAD/B,EAErB,QAFqB,EAEX,QAFW,EAED,WAFC,EAEY,SAFZ,EAEuB,UAFvB,EAEmC,UAFnC,E;IAKtB,sCAAoC,oBAAO,mBAAP,C;IACpC,qCAAmC,oBAAO,gBAAP,C;IAEnC,gCAA8B,oBAAO,eAAP,C;IAC9B,gCAA8B,oBAAO,UAAP,C;IAC9B,kCAAgC,oBAAO,UAAP,C;IAChC,iCAA+B,oBAAO,UAAP,C;IAE/B,kCAAgC,oBAAO,UAAP,C;IAChC,iCAA+B,oBAAO,OAAP,C;G;EAzB/B,wC;IAAA,4C;IAAmB,6B;G;;;;;;;EAAnB,oD;IAAA,mD;MAAA,kC;KAAA,4C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,+B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAGA,Y;MAAA,4B;K;;;;SAKA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;EC5BkC,iC;IAAQ,kD;G;EAE3C,+B;IACC,2C;IADgC,sB;IAGhC,0BAAwB,I;IAExB,2BAAyB,QAAO,cAAP,EAAa,cAAb,E;IAEzB,8D;IAEA,4BAA0B,QACzB,oBADyB,EAClB,oBADkB,EACX,oBADW,EACJ,oBADI,EACG,oBADH,EACU,oBADV,EACiB,oBADjB,E;IAG1B,wBAAsB,QACrB,SADqB,EACf,SADe,EACT,SADS,EACH,SADG,EACG,SADH,EACS,SADT,EACe,SADf,EACqB,SADrB,EAC2B,SAD3B,EACiC,UADjC,EACwC,UADxC,EAC+C,UAD/C,E;IAKtB,iCAA6C,QAAO,QAAP,EAAY,QAAZ,EAAiB,QAAjB,EAAsB,QAAtB,EAA2B,QAA3B,EAAgC,QAAhC,EAAqC,QAArC,E;IAE7C,sCAAoC,oBAAO,iBAAP,C;IACpC,qCAAmC,oBAAO,cAAP,C;IAEnC,gCAA8B,oBAAO,iCAAP,C;IAC9B,gCAA8B,oBAAO,6BAAP,C;IAC9B,kCAAgC,oBAAO,SAAP,C;IAChC,iCAA+B,oBAAO,SAAP,C;IAE/B,kCAAgC,oBAAO,SAAP,C;IAChC,iCAA+B,oBAAO,MAAP,C;G;EA3B/B,yC;IAAA,6C;IAAmB,8B;G;;;;;;;EAAnB,qD;IAAA,oD;MAAA,mC;KAAA,6C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,+B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAGA,Y;MAAA,4B;K;;;;SAIuC,Y;MAAQ,kB;K;;;;SAC/C,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;EC9BgC,+B;IAAQ,gD;G;EAEzC,6B;IACC,yC;IAD8B,sB;IAG9B,0BAAwB,I;IAExB,2BAAyB,QAAO,cAAP,EAAa,cAAb,E;IAEzB,8D;IAEA,4BAA0B,QACzB,oBADyB,EAClB,oBADkB,EACX,oBADW,EACJ,oBADI,EACG,oBADH,EACU,oBADV,EACiB,oBADjB,E;IAG1B,wBAAsB,QACrB,SADqB,EACf,SADe,EACT,SADS,EACH,SADG,EACG,SADH,EACS,SADT,EACe,SADf,EACqB,SADrB,EAC2B,SAD3B,EACiC,UADjC,EACwC,UADxC,EAC+C,UAD/C,E;IAItB,iCAA6C,QAAO,QAAP,EAAY,QAAZ,EAAiB,QAAjB,EAAsB,QAAtB,EAA2B,QAA3B,EAAgC,QAAhC,EAAqC,QAArC,E;IAG7C,sCAAoC,oBAAO,oBAAP,C;IACpC,qCAAmC,oBAAO,kBAAP,C;IAEnC,gCAA8B,oBAAO,8BAAP,C;IAC9B,gCAA8B,oBAAO,yBAAP,C;IAC9B,kCAAgC,oBAAO,UAAP,C;IAChC,iCAA+B,oBAAO,WAAP,C;IAE/B,kCAAgC,oBAAO,WAAP,C;IAChC,iCAA+B,oBAAO,QAAP,C;G;EA3B/B,uC;IAAA,2C;IAAmB,4B;G;;;;;;;EAAnB,mD;IAAA,kD;MAAA,iC;KAAA,2C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,+B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAGA,Y;MAAA,4B;K;;;;SAIA,Y;MAAA,qC;K;;;;SACuC,Y;MAAQ,kB;K;;;;SAE/C,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;EC9BmC,kC;IAAQ,mD;G;EAE5C,gC;IAEI,4C;IAF8B,sB;IAI9B,0BAAwB,I;IAExB,8D;IAEA,4BAA0B,QACtB,WADsB,EACZ,QADY,EACF,SADE,EACS,QADT,EACmB,SADnB,EAC8B,QAD9B,EACwC,WADxC,E;IAI1B,wBAAsB,QAClB,QADkB,EAElB,SAFkB,EAGlB,MAHkB,EAIlB,OAJkB,EAKlB,KALkB,EAMlB,MANkB,EAOlB,MAPkB,EAQlB,QARkB,EASlB,WATkB,EAUlB,SAVkB,EAWlB,UAXkB,EAYlB,UAZkB,E;IAetB,sCAAoC,oBAAO,kBAAP,C;IACpC,qCAAmC,oBAAO,gBAAP,C;IAEnC,gCAA8B,oBAAO,iBAAP,C;IAC9B,gCAA8B,oBAAO,WAAP,C;IAC9B,kCAAgC,oBAAO,SAAP,C;IAChC,iCAA+B,oBAAO,UAAP,C;IAE/B,kCAAgC,oBAAO,UAAP,C;IAChC,iCAA+B,oBAAO,OAAP,C;G;EAlC/B,0C;IAAA,8C;IAAmB,+B;G;;;;;;;EAAnB,sD;IAAA,qD;MAAA,oC;KAAA,8C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAIA,Y;MAAA,4B;K;;;;SAeA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;ECtC4B,8B;IAAQ,+C;G;EAExC,4B;IACC,wC;IAD6B,sB;IAG7B,0BAAwB,I;IAExB,2BAAyB,QAAO,MAAP,EAAe,MAAf,E;IAEzB,8D;IAEA,4BAA0B,QACzB,QADyB,EACf,SADe,EACJ,SADI,EACO,UADP,EACmB,WADnB,EACgC,SADhC,EAC2C,UAD3C,E;IAG1B,wBAAsB,QACrB,SADqB,EACV,UADU,EACE,OADF,EACW,OADX,EACoB,KADpB,EAC2B,MAD3B,EAErB,MAFqB,EAEb,UAFa,EAED,WAFC,EAEY,SAFZ,EAEuB,UAFvB,EAEmC,UAFnC,E;IAKtB,sCAAoC,oBAAO,kBAAP,C;IACpC,qCAAmC,oBAAO,gBAAP,C;IAEnC,gCAA8B,oBAAO,eAAP,C;IAC9B,gCAA8B,oBAAO,UAAP,C;IAC9B,kCAAgC,oBAAO,SAAP,C;IAChC,iCAA+B,oBAAO,SAAP,C;IAE/B,kCAAgC,oBAAO,UAAP,C;IAChC,iCAA+B,oBAAO,OAAP,C;G;EAzB/B,sC;IAAA,0C;IAAmB,2B;G;;;;;;;EAAnB,kD;IAAA,iD;MAAA,gC;KAAA,0C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,+B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAGA,Y;MAAA,4B;K;;;;SAKA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;EC5BoC,mC;IAAQ,oD;G;EAE7C,iC;IACC,6C;IADkC,sB;IAGlC,0BAAwB,I;IAExB,2BAAyB,QAAO,IAAP,EAAa,IAAb,E;IAEzB,8D;IAEA,4BAA0B,QACzB,SADyB,EAEzB,eAFyB,EAGzB,gBAHyB,EAIzB,cAJyB,EAKzB,cALyB,EAMzB,aANyB,EAOzB,WAPyB,E;IAS1B,wBAAsB,QACrB,SADqB,EAErB,WAFqB,EAGrB,UAHqB,EAIrB,OAJqB,EAKrB,MALqB,EAMrB,OANqB,EAOrB,OAPqB,EAQrB,QARqB,EASrB,UATqB,EAUrB,SAVqB,EAWrB,UAXqB,EAYrB,UAZqB,E;IAetB,sCAAoC,oBAAO,4BAAP,C;IACpC,qCAAmC,oBAAO,eAAP,C;IAEnC,gCAA8B,oBAAO,0BAAP,C;IAC9B,gCAA8B,oBAAO,oBAAP,C;IAC9B,kCAAgC,oBAAO,mBAAP,C;IAChC,iCAA+B,oBAAO,SAAP,C;G;EAtC/B,2C;IAAA,+C;IAAmB,gC;G;;;;;;;EAAnB,uD;IAAA,sD;MAAA,qC;KAAA,+C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,+B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SASA,Y;MAAA,4B;K;;;;SAeA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;ECvCiC,gC;IAAQ,iD;G;EAE1C,8B;IACC,0C;IAD+B,sB;IAW/B,0BAAwB,I;IAExB,0BAAyB,QAAO,cAAP,EAAa,cAAb,E;IAEzB,8D;IAEA,4BAA0B,QACzB,oEADyB,EACV,oEADU,EACK,4CADL,EACgB,gCADhB,EACyB,4CADzB,EACoC,4CADpC,EAC+C,4CAD/C,E;IAI1B,iCAA+B,QAC9B,cAD8B,EACxB,cADwB,EAClB,cADkB,EACZ,cADY,EACN,cADM,EACA,cADA,EACM,cADN,E;IAI/B,wBAAsB,QACrB,sCADqB,EACX,4CADW,EACA,gCADA,EACS,sCADT,EACmB,oBADnB,EAC0B,0BAD1B,EAErB,0BAFqB,EAEb,4CAFa,EAEF,kDAFE,EAEU,4CAFV,EAEqB,sCAFrB,EAE+B,4CAF/B,E;IAKtB,sCAAoC,oBAAO,yBAAP,C;IACpC,qCAAmC,oBAAO,cAAP,C;IAEnC,gCAA8B,oBAAO,wBAAP,C;IAC9B,gCAA8B,oBAAO,kBAAP,C;IAC9B,kCAAgC,oBAAO,iBAAP,C;IAChC,iCAA+B,oBAAO,SAAP,C;IAE/B,kCAAgC,oBAAO,SAAP,C;IAChC,iCAA+B,oBAAO,MAAP,C;G;EAtC/B,wC;IAAA,4C;IAAmB,6B;G;;;;;;;EAAnB,oD;IAAA,mD;MAAA,kC;KAAA,4C;G;iEAEG,wB;IACI,WADgF,OAAQ,OACxF,6C;MAD0E,OACzC,GAAF,uB;;MAD2C,OAGhE,GAAF,uB;G;yDAGZ,mB;IAAqD,OAAiC,MAAzB,oBAAR,OAAQ,EAAoB,EAApB,CAAyB,C;G;;;SAEzF,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAIA,Y;MAAA,qC;K;;;;SAIA,Y;MAAA,4B;K;;;;SAKA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;EC3CiC,gC;IAAQ,iD;G;EAE1C,8B;IAEI,0C;IAF4B,sB;IAI5B,0BAAgC,I;IAEhC,8D;IAEA,4BAAwC,QACpC,WADoC,EAC1B,WAD0B,EAChB,QADgB,EACN,QADM,EACI,SADJ,EACe,QADf,EACyB,WADzB,E;IAIxC,wBAAoC,QAChC,SADgC,EAEhC,UAFgC,EAGhC,MAHgC,EAIhC,OAJgC,EAKhC,KALgC,EAMhC,MANgC,EAOhC,MAPgC,EAQhC,SARgC,EAShC,WATgC,EAUhC,SAVgC,EAWhC,UAXgC,EAYhC,UAZgC,E;IAepC,sCAAoC,oBAAO,kBAAP,C;IACpC,qCAAmC,oBAAO,gBAAP,C;IAEnC,gCAA8B,oBAAO,iBAAP,C;IAC9B,gCAA8B,oBAAO,WAAP,C;IAC9B,kCAAgC,oBAAO,SAAP,C;IAChC,iCAA+B,oBAAO,UAAP,C;IAE/B,kCAAgC,oBAAO,UAAP,C;IAChC,iCAA+B,oBAAO,OAAP,C;G;EAlC/B,wC;IAAA,4C;IAAmB,6B;G;;;;;;;EAAnB,oD;IAAA,mD;MAAA,kC;KAAA,4C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAIA,Y;MAAA,4B;K;;;;SAeA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;ECtCgC,kC;IAAQ,mD;G;EAE5C,gC;IACC,4C;IADiC,sB;IAGjC,0BAAwB,I;IACxB,2BAAyB,QAAO,cAAP,EAAa,cAAb,E;IAEzB,8D;IAEG,4BAA0B,QACtB,sCADsB,EACZ,wDADY,EACC,kDADD,EACa,sCADb,EACuB,sCADvB,EACiC,6CADjC,EAC6C,sCAD7C,E;IAI1B,iCAA+B,QAC3B,cAD2B,EACrB,cADqB,EACf,cADe,EACT,cADS,EACH,cADG,EACG,cADH,EACS,cADT,E;IAIlC,wBAAsB,QACrB,gCADqB,EACZ,sCADY,EACF,4CADE,EACS,sCADT,EACmB,sCADnB,EAC6B,sCAD7B,EAErB,gCAFqB,EAEZ,sCAFY,EAEF,4CAFE,EAES,sCAFT,EAEmB,wDAFnB,EAEgC,sCAFhC,E;IAKtB,sCAAoC,oBAAO,yBAAP,C;IACpC,qCAAmC,oBAAO,cAAP,C;IAEnC,gCAA8B,oBAAO,wBAAP,C;IAC9B,gCAA8B,oBAAO,kBAAP,C;IAC9B,iCAAgC,oBAAO,iBAAP,C;IAChC,iCAA+B,oBAAO,SAAP,C;IAE/B,kCAAgC,oBAAO,SAAP,C;IAChC,iCAA+B,oBAAO,MAAP,C;G;EA7B/B,0C;IAAA,8C;IAAmB,+B;G;;;;;;;EAAnB,sD;IAAA,qD;MAAA,oC;KAAA,8C;G;;;SAEA,Y;MAAA,8B;K;;;;SACA,Y;MAAA,+B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEG,Y;MAAA,gC;K;;;;SAIA,Y;MAAA,qC;K;;;;SAIH,Y;MAAA,4B;K;;;;SAKA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,qC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;EChCiC,gC;IAAQ,iD;G;EAE1C,8B;IACC,0C;IAD+B,sB;IAG/B,0BAAwB,I;IAExB,2BAAyB,QAAO,cAAP,EAAa,cAAb,E;IAEzB,8D;IAEA,4BAA0B,QACzB,oBADyB,EAClB,oBADkB,EACX,oBADW,EACJ,oBADI,EACG,oBADH,EACU,oBADV,EACiB,oBADjB,E;IAG1B,wBAAsB,QACrB,cADqB,EACf,cADe,EACT,cADS,EACH,cADG,EACG,cADH,EACS,cADT,EACe,cADf,EACqB,cADrB,EAC2B,cAD3B,EACiC,cADjC,EACuC,oBADvC,EAC8C,oBAD9C,E;IAItB,iCAA6C,QAAO,cAAP,EAAa,cAAb,EAAmB,cAAnB,EAAyB,cAAzB,EAA+B,cAA/B,EAAqC,cAArC,EAA2C,cAA3C,E;IAC7C,6BAAyC,QACxC,SADwC,EAClC,SADkC,EAC5B,SAD4B,EACtB,SADsB,EAChB,SADgB,EACV,SADU,EACJ,SADI,EACE,SADF,EACQ,SADR,EACc,UADd,EACqB,UADrB,EAC4B,UAD5B,E;IAIzC,sCAAoC,oBAAO,gCAAP,C;IACpC,qCAAmC,oBAAO,aAAP,C;IAEnC,gCAA8B,oBAAO,2BAAP,C;IAC9B,gCAA8B,oBAAO,uBAAP,C;IAC9B,kCAAgC,oBAAO,uBAAP,C;IAChC,iCAA+B,oBAAO,OAAP,C;IAE/B,kCAAgC,oBAAO,SAAP,C;IAChC,iCAA+B,oBAAO,MAAP,C;G;EA7B/B,wC;IAAA,4C;IAAmB,6B;G;;;;;;;EAAnB,oD;IAAA,mD;MAAA,kC;KAAA,4C;G;;;SAEA,Y;MAAA,8B;K;;;;SAEA,Y;MAAA,+B;K;;;;SAEA,Y;MAAA,oC;K;;;;SAEA,Y;MAAA,gC;K;;;;SAGA,Y;MAAA,4B;K;;;;SAIA,Y;MAAA,qC;K;;;;SACA,Y;MAAA,iC;K;;;;SAIA,Y;MAAA,0C;K;;;;SACA,Y;MAAA,yC;K;;;;SAEA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,oC;K;;;;SACA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;SAEA,Y;MAAA,sC;K;;;;SACA,Y;MAAA,qC;K;;;;;;;EC9BgB,gC;IAAQ,iBAAM,SAAN,C;G;EAUT,sB;IACZ,6B;IADa,kB;G;EACb,2B;IAAA,+B;IACI,4B;G;6CAGA,4B;IACuD,OAAuB,YAAvB,4CAAK,IAAL,EAAW,KAAX,EAAkB,GAAlB,CAAuB,C;G;6CAC9E,4B;IAC0D,OAAuB,YAAvB,4CAAK,IAAL,EAAW,KAAX,EAAkB,GAAlB,CAAuB,C;G;6CACjF,4B;IAC4D,OAA6B,YAA7B,4CAAK,IAAK,MAAV,EAAiB,KAAjB,EAAwB,GAAxB,CAA6B,C;G;6CACzF,0B;IACuD,OAA2B,YAA3B,4CAAK,SAAU,MAAf,EAAsB,GAAtB,CAA2B,C;G;;;;;;;EAXtF,uC;IAAA,sC;MAAA,qB;KAAA,+B;G;;;SAec,Y;MAAQ,OAAA,UAAM,K;K;;;;SAEZ,Y;MAAQ,OAAA,UAAM,O;K;;;;SAEZ,Y;MAAQ,OAAA,UAAM,M;K;;;;SAEnB,Y;MAAQ,OAAA,UAAM,I;K;;;;SAEP,Y;MAAQ,OAAe,cAAf,UAAM,SAAS,C;K;;;;SAGtB,Y;MAAQ,OAAuB,cAAvB,UAAM,iBAAiB,C;K;;;;SAGtC,Y;MAAQ,OAAA,UAAM,U;K;;;;SAEd,Y;MAAQ,OAAA,UAAM,U;K;;;;SAEX,Y;MAAQ,OAAA,UAAM,a;K;;mCAE/B,kB;IAC6B,OAAA,UAAM,gBAAO,MAAP,C;G;mCACnC,kB;IACiC,OAAA,UAAM,gBAAO,MAAP,C;G;oCAEvC,iB;IAA4C,OAAA,IAAK,MAAM,iBAAU,KAAM,MAAhB,C;G;iCAEvD,gB;IAAqC,OAA0B,YAAzB,OAAA,IAAK,MAAL,EAAa,IAAK,MAAlB,CAAyB,C;G;iCAC/D,gB;IAAsC,OAA0B,YAAzB,OAAA,IAAK,MAAL,EAAa,IAAK,MAAlB,CAAyB,C;G;iCAChE,gB;IAAyC,OAA0B,YAAzB,OAAA,IAAK,MAAL,EAAkB,UAAL,IAAK,CAAlB,CAAyB,C;G;iCACnE,gB;IAAiC,OAA0B,cAAzB,OAAA,IAAK,MAAL,EAAa,IAAK,MAAlB,CAAyB,C;G;kCAE3D,gB;IAAsC,OAA0B,YAAzB,MAAA,IAAK,MAAL,EAAa,IAAK,MAAlB,CAAyB,C;G;kCAChE,gB;IAAuC,OAA0B,YAAzB,QAAA,IAAK,MAAL,EAAa,IAAK,MAAlB,CAAyB,C;G;kCACjE,gB;IAA0C,OAA0B,YAAzB,QAAA,IAAK,MAAL,EAAkB,UAAL,IAAK,CAAlB,CAAyB,C;G;kCACpE,gB;IAAkC,OAA0B,cAAzB,QAAA,IAAK,MAAL,EAAa,IAAK,MAAlB,CAAyB,C;G;6BAE5D,Y;IACkC,OAAA,UAAM,W;G;;;;;;+BA9D5C,Y;IAQiB,iB;G;iCARjB,iB;IAAA,iBAQiB,qCARjB,C;G;6BAAA,Y;IAAA,c;IAQiB,sD;IARjB,a;G;2BAAA,iB;IAAA,2IAQiB,sCARjB,G;G;ECFqB,kC;IAAQ,qBAAU,SAAV,C;G;EAaT,0B;IAChB,iC;IADiB,kB;G;EACjB,+B;IAAA,mC;IACI,4B;G;;;SAIU,Y;MAAQ,OAAe,cAAf,gCAAS,MAAM,C;K;;iDAEjC,gE;IASI,oB;MAAA,OAAY,C;IACZ,sB;MAAA,SAAc,C;IACd,sB;MAAA,SAAc,C;IACd,4B;MAAA,eAAoB,C;IACpB,OAAqE,cAArE,gDAAS,IAAK,MAAd,EAAqB,KAArB,EAA4B,GAA5B,EAAiC,IAAjC,EAAuC,MAAvC,EAA+C,MAA/C,EAAuD,YAAvD,CAAqE,C;G;iDAEzE,sB;IAOI,oB;MAAA,OAAa,S7DLW,kBAAS,0B6DKf,C7DLe,C6DKpB,C;KACb,OAA2B,cAA3B,gDAAS,IAAK,MAAd,EAAqB,IAArB,CAA2B,C;G;iDAE/B,gE;IASI,oB;MAAA,OAAY,C;IACZ,sB;MAAA,SAAc,C;IACd,sB;MAAA,SAAc,C;IACd,4B;MAAA,eAAoB,C;IACpB,OAA+D,cAA/D,gDAAS,IAAT,EAAe,KAAf,EAAsB,GAAtB,EAA2B,IAA3B,EAAiC,MAAjC,EAAyC,MAAzC,EAAiD,YAAjD,CAA+D,C;G;iDAEnE,gE;IASI,oB;MAAA,OAAY,C;IACZ,sB;MAAA,SAAc,C;IACd,sB;MAAA,SAAc,C;IACd,4B;MAAA,eAAoB,C;IACpB,OAA+D,cAA/D,gDAAS,IAAT,EAAe,KAAf,EAAsB,GAAtB,EAA2B,IAA3B,EAAiC,MAAjC,EAAyC,MAAzC,EAAiD,YAAjD,CAA+D,C;G;wDAEnE,gE;IASI,oB;MAAA,OAAY,C;IACZ,sB;MAAA,SAAc,C;IACd,sB;MAAA,SAAc,C;IACd,4B;MAAA,eAAoB,C;IACpB,OAA6E,cAA7E,gCAAS,uBAAc,IAAd,EAAoB,KAApB,EAA2B,GAA3B,EAAgC,IAAhC,EAAsC,MAAtC,EAA8C,MAA9C,EAAsD,YAAtD,CAAoE,C;G;yDAEjF,gE;IASI,oB;MAAA,OAAY,C;IACZ,sB;MAAA,SAAc,C;IACd,sB;MAAA,SAAc,C;IACd,4B;MAAA,eAAoB,C;IACpB,OAA8E,cAA9E,gCAAS,wBAAe,IAAf,EAAqB,KAArB,EAA4B,GAA5B,EAAiC,IAAjC,EAAuC,MAAvC,EAA+C,MAA/C,EAAuD,YAAvD,CAAqE,C;G;0DAElF,gE;IASI,oB;MAAA,OAAY,C;IACZ,sB;MAAA,SAAc,C;IACd,sB;MAAA,SAAc,C;IACd,4B;MAAA,eAAoB,C;IACpB,OAA+E,cAA/E,gCAAS,yBAAgB,IAAhB,EAAsB,KAAtB,EAA6B,GAA7B,EAAkC,IAAlC,EAAwC,MAAxC,EAAgD,MAAhD,EAAwD,YAAxD,CAAsE,C;G;iDAEnF,gB;IACkC,OAAe,cAAf,gDAAS,IAAT,CAAe,C;G;iDACjD,gB;IACoC,OAAe,cAAf,aAAS,IAAT,CAAe,C;G;mDAEnD,gB;IAC6B,OAAwB,cAAxB,gCAAS,kBAAS,IAAT,CAAe,C;G;mDACrD,gB;IAC2B,OAAwB,cAAxB,gCAAS,kBAAS,IAAT,CAAe,C;G;qDAEnD,e;IAC8B,OAAyB,cAAzB,gCAAS,oBAAW,GAAX,CAAgB,C;G;gDACvD,e;IACyB,OAAoB,cAApB,gCAAS,eAAM,GAAN,CAAW,C;G;sCAE7C,Y;IACY,OAAe,cAAf,gCAAS,MAAM,C;G;2CAC3B,Y;IACiB,OAAoB,cAApB,gCAAS,WAAW,C;G;0CAErC,Y;IACwB,OAAA,gCAAS,U;G;8CACjC,Y;IAC0B,OAAA,gCAAS,c;G;;;;;;;EAlIvC,2C;IAAA,0C;MAAA,yB;KAAA,mC;G;;;SAsI0B,Y;MAAQ,OAAA,UAAM,c;K;;;;SAGP,Y;MAAQ,OAAkB,cAAlB,UAAM,YAAY,C;K;;;;SAG9B,Y;MAAQ,OAAA,UAAM,iB;K;;;;SAGlB,Y;MAAQ,OAAA,UAAM,e;K;;;;SAGvB,Y;MAAQ,OAAW,cAAX,UAAM,KAAK,C;K;;;;SAElB,Y;MAAQ,OAAA,UAAM,Q;K;;;;SAGb,Y;MAAQ,OAAY,cAAZ,UAAM,MAAM,C;K;;;;SAEtB,Y;MAAQ,OAAA,UAAM,O;K;;;;SAEd,Y;MAAQ,OAAA,UAAM,O;K;;;;SAGJ,Y;MAAQ,OAAgB,eAAhB,UAAM,UAAU,C;K;;;;SAG9B,Y;MAAQ,OAAA,UAAM,W;K;;;;SAGR,Y;MAAQ,OAAgB,cAAhB,UAAM,UAAU,C;K;;;;SAE5B,Y;MAAQ,OAAA,UAAM,a;K;;;;SAGjB,Y;MAAQ,OAAA,UAAM,U;K;;;;SAGlB,Y;MAAQ,OAAA,UAAM,M;K;;;;SAEZ,Y;MAAQ,OAAA,UAAM,Q;K;;;;SAEd,Y;MAAQ,OAAA,UAAM,Q;K;;;;SAET,Y;MAAQ,OAAA,UAAM,a;K;;;;SAGH,Y;MAAQ,OAAsB,cAAtB,UAAM,gBAAgB,C;K;;mDAC/D,kB;IAC4C,OAAuC,cAAvC,UAAM,4BAAmB,MAAO,MAA1B,CAAiC,C;G;mDACnF,kB;IACkD,OAAuC,cAAvC,UAAM,4BAAmB,MAAO,MAA1B,CAAiC,C;G;;;SAGlE,Y;MAAQ,OAAY,cAAZ,UAAM,MAAM,C;K;;yCAC3C,kB;IACkC,OAA6B,cAA7B,UAAM,kBAAS,MAAO,MAAhB,CAAuB,C;G;yCAC/D,kB;IACwC,OAA6B,cAA7B,UAAM,kBAAS,MAAO,MAAhB,CAAuB,C;G;;;SAEhD,Y;MAAQ,OAAU,cAAV,UAAM,IAAI,C;K;;;;SAGtB,Y;MAAQ,OAAmB,cAAnB,UAAM,aAAa,C;K;;;;SAE7B,Y;MAAQ,OAAiB,cAAjB,UAAM,WAAW,C;K;;;;SAG5B,Y;MAAQ,OAAA,UAAM,Q;K;;;;SAIV,Y;MAAQ,OAAkB,cAAlB,UAAM,YAAY,C;K;;;;SACzB,Y;MAAQ,OAAmB,cAAnB,UAAM,aAAa,C;K;;;;SACzB,Y;MAAQ,OAAqB,cAArB,UAAM,eAAe,C;K;;iDAChD,e;IAAwC,OAA4B,cAA5B,UAAM,0BAAiB,GAAjB,CAAsB,C;G;;;SACpD,Y;MAAQ,OAAkB,cAAlB,UAAM,YAAY,C;K;;;;SACvB,Y;MAAQ,OAAqB,cAArB,UAAM,eAAe,C;K;;;;SACjC,Y;MAAQ,OAAiB,cAAjB,UAAM,WAAW,C;K;;;;SACxB,Y;MAAQ,OAAkB,cAAlB,UAAM,YAAY,C;K;;;;SACxB,Y;MAAQ,OAAoB,cAApB,UAAM,cAAc,C;K;;;;SAC5B,Y;MAAQ,OAAoB,cAApB,UAAM,cAAc,C;K;;;;SAIhC,Y;MAAQ,OAAgB,cAAhB,UAAM,UAAU,C;K;;;;SACvB,Y;MAAQ,OAAiB,cAAjB,UAAM,WAAW,C;K;;;;SACvB,Y;MAAQ,OAAmB,cAAnB,UAAM,aAAa,C;K;;+CAC5C,e;IAAsC,OAA0B,cAA1B,UAAM,wBAAe,GAAf,CAAoB,C;G;;;SAClD,Y;MAAQ,OAAgB,cAAhB,UAAM,UAAU,C;K;;;;SACrB,Y;MAAQ,OAAmB,cAAnB,UAAM,aAAa,C;K;;;;SAC/B,Y;MAAQ,OAAe,cAAf,UAAM,SAAS,C;K;;;;SACtB,Y;MAAQ,OAAgB,cAAhB,UAAM,UAAU,C;K;;;;SACtB,Y;MAAQ,OAAkB,cAAlB,UAAM,YAAY,C;K;;;;SAC1B,Y;MAAQ,OAAkB,cAAlB,UAAM,YAAY,C;K;;;;SAEjC,Y;MAAQ,OAAW,YAAX,UAAM,KAAK,C;K;;;;SACnB,Y;MAAQ,OAAW,cAAX,UAAM,KAAK,C;K;;qCAE5B,iB;IAAkD,OAA2B,cAA1B,IAAK,MAAL,cAAa,KAAM,MAAnB,CAA0B,C;G;qCAC7E,iB;IAAqD,OAA2B,cAA1B,IAAK,MAAL,cAAmB,UAAN,KAAM,CAAnB,CAA0B,C;G;qCAChF,iB;IAAiD,OAA2B,cAA1B,IAAK,MAAL,cAAa,KAAM,MAAnB,CAA0B,C;G;sCAE5E,iB;IAAmD,OAA2B,cAA1B,IAAK,MAAL,eAAa,KAAM,MAAnB,CAA0B,C;G;sCAC9E,iB;IAAsD,OAA2B,cAA1B,IAAK,MAAL,eAAmB,UAAN,KAAM,CAAnB,CAA0B,C;G;sCACjF,iB;IAAkD,OAA2B,cAA1B,IAAK,MAAL,eAAa,KAAM,MAAnB,CAA0B,C;G;sCAE7E,iB;IAAkD,OAA2B,cAA1B,IAAK,MAAL,eAAa,KAAM,MAAnB,CAA0B,C;G;wCAE7E,iB;IAAgD,OAAA,IAAK,MAAM,iBAAU,KAAM,MAAhB,C;G;oCAE3D,0C;IACkE,OAA0C,cAA1C,UAAM,aAAI,WAAJ,EAAiB,iBAAjB,CAAoC,C;G;oCAE5G,8B;IACgE,OAA0C,cAA1C,UAAM,aAAI,QAAS,MAAb,EAAoB,QAAS,MAA7B,CAAoC,C;G;+CAE1G,0E;IACI,oB;MAAA,OAAc,IAAK,K;IACnB,qB;MAAA,QAAgB,IAAK,M;IACrB,0B;MAAA,aAAkB,IAAK,W;IACvB,qB;MAAA,QAAa,IAAK,M;IAClB,uB;MAAA,UAAe,IAAK,Q;IACpB,uB;MAAA,UAAe,IAAK,Q;IACpB,4B;MAAA,eAAoB,IAAK,a;IACzB,OAA+E,cAA/E,gDAAS,IAAK,MAAd,EAAqB,KAArB,EAA4B,UAA5B,EAAwC,KAAxC,EAA+C,OAA/C,EAAwD,OAAxD,EAAiE,YAAjE,CAA+E,C;G;uCAEnF,kB;IACyC,OAAA,UAAM,gBAAO,MAAP,C;G;uCAC/C,kB;IACqC,OAAA,UAAM,gBAAO,MAAP,C;G;yCAE3C,kB;IACuC,OAAA,UAAM,gBAAO,MAAP,C;G;yCAC7C,kB;IAC2C,OAAA,UAAM,gBAAO,MAAP,C;G;iCAEjD,Y;IACkC,OAAA,UAAM,W;G;;;;;;mCA5R5C,Y;IAWqB,iB;G;qCAXrB,iB;IAAA,qBAWqB,qCAXrB,C;G;iCAAA,Y;IAAA,c;IAWqB,sD;IAXrB,a;G;+BAAA,iB;IAAA,2IAWqB,sCAXrB,G;G;EA+RA,qB;IACiD,OAAsB,cAAtB,IAAI,CAAE,MAAN,EAAa,CAAE,MAAf,CAAsB,C;G;EACvE,qB;IACiD,OAAsB,cAAtB,IAAI,CAAE,MAAN,EAAa,CAAE,MAAf,CAAsB,C;G;EACvE,sC;IACiE,OAAuC,cAA5B,MAAX,SAAK,MAAM,EAAM,GAAI,MAAV,EAAiB,GAAI,MAArB,CAA4B,C;G;ECvS/E,kC;IAAQ,qBAAc,SAAd,C;G;EAET,8B;IAAQ,gB;G;EAChC,8B;IACyC,Y;G;ECJlB,kC;IAAQ,gB;G;EAET,gC;IAAQ,gB;G;EAC9B,4B;IACqC,Y;G;ECJf,kC;IAAQ,gB;G;EAET,gC;IAAQ,gB;G;EAC7B,2B;IACmC,Y;G;ECJjB,kC;IAAQ,gB;G;EAET,gC;IAAQ,gB;G;EACzB,uB;IAC2B,Y;G;ECHL,kC;IAAQ,sBAAW,SAAX,C;G;EAQT,2B;IACjB,kC;IADkB,kB;G;EAClB,gC;IAAA,oC;IACI,4B;G;;;;;;;EADJ,4C;IAAA,2C;MAAA,0B;KAAA,oC;G;;;SAKqB,Y;MAAQ,OAAA,UAAM,Y;K;;;;SAEZ,Y;MAAQ,OAAM,eAAN,UAAM,C;K;;;;SAEtB,Y;MAAQ,OAAM,YAAN,UAAM,C;K;;;;SAEb,Y;MAAQ,OAAM,aAAN,UAAM,C;K;;oCAE9B,Y;IAA4B,OAAS,cAAP,UAAD,aAAQ,C;G;mCACrC,Y;IAA2B,OAAS,cAAP,UAAD,YAAQ,C;G;sCAEpC,iB;IAAsC,OAA2B,cAA1B,IAAK,MAAL,cAAa,KAAM,MAAnB,CAA0B,C;G;sCACjE,iB;IAAuC,OAA2B,cAA1B,IAAK,MAAL,cAAa,KAAM,MAAnB,CAA0B,C;G;sCAClE,iB;IAA0C,OAA2B,cAA1B,IAAK,MAAL,cAAmB,UAAN,KAAM,CAAnB,CAA0B,C;G;uCAErE,iB;IAAuC,OAA2B,cAA1B,IAAK,MAAL,eAAa,KAAM,MAAnB,CAA0B,C;G;uCAClE,iB;IAAwC,OAA2B,cAA1B,IAAK,MAAL,eAAa,KAAM,MAAnB,CAA0B,C;G;uCACnE,iB;IAA2C,OAA2B,cAA1B,IAAK,MAAL,eAAmB,UAAN,KAAM,CAAnB,CAA0B,C;G;uCAEtE,iB;IAAoC,OAAgB,cAAf,yBAAQ,KAAR,CAAe,C;G;uCACpD,iB;IAAmC,0BAAa,KAAb,C;G;uCACnC,iB;IAAiC,0BAAa,KAAb,C;G;qCAEjC,iB;IAAkC,OAAgB,cAAf,uBAAQ,KAAR,CAAe,C;G;qCAClD,iB;IAAiC,wBAAa,KAAb,C;G;qCACjC,iB;IAA+B,wBAAa,KAAb,C;G;yCAE/B,iB;IAAiD,OAAA,IAAK,MAAM,iBAAU,KAAM,MAAhB,C;G;kCAE5D,Y;IACkC,OAAA,UAAM,W;G;;;;;;oCA1C5C,Y;IAMsB,iB;G;sCANtB,iB;IAAA,sBAMsB,qCANtB,C;G;kCAAA,Y;IAAA,c;IAMsB,sD;IANtB,a;G;gCAAA,iB;IAAA,2IAMsB,sCANtB,G;G;ECFiB,kC;IAAQ,iBAAM,SAAN,C;G;EAQT,sB;IACZ,6B;IADa,kB;G;EACb,2B;IAAA,+B;IACI,4B;G;6CAGA,6C;IAC+B,sB;MAAA,SAAc,C;IAAG,sB;MAAA,SAAc,C;IAAG,2B;MAAA,cAAmB,C;IAChF,OAAwC,cAAxC,4CAAK,IAAL,EAAW,MAAX,EAAmB,MAAnB,EAA2B,WAA3B,CAAwC,C;G;;;;;;;EANhD,uC;IAAA,sC;MAAA,qB;KAAA,+B;G;;;SASqB,Y;MAAQ,OAAA,UAAM,Y;K;;;;SAEnB,Y;MAAQ,OAAA,UAAM,O;K;;;;SAEd,Y;MAAQ,OAAA,UAAM,O;K;;;;SAEhB,Y;MAAQ,OAAA,UAAM,K;K;;;;SAEN,Y;MAAQ,OAAA,UAAM,a;K;;2BAEpC,Y;IACsB,OAAe,cAAf,UAAM,SAAS,C;G;mCAErC,kB;IAC6B,OAAA,UAAM,gBAAO,MAAP,C;G;mCACnC,kB;IACiC,OAAA,UAAM,gBAAO,MAAP,C;G;6BAEvC,Y;IACkC,OAAA,UAAM,W;G;oCAExC,iB;IAA4C,OAAA,IAAK,MAAM,iBAAU,KAAM,MAAhB,C;G;;;;;;+BArC3D,Y;IAMiB,iB;G;iCANjB,iB;IAAA,iBAMiB,qCANjB,C;G;6BAAA,Y;IAAA,c;IAMiB,sD;IANjB,a;G;2BAAA,iB;IAAA,2IAMiB,sCANjB,G;G;EAwCA,iC;IAC2C,OAA0B,cAAzB,OAAA,SAAK,MAAL,EAAa,IAAK,MAAlB,CAAyB,C;G;EC3ChD,kC;IAAQ,qBAAU,SAAV,C;G;EAUT,0B;IA4ChB,iC;IA5CiB,kB;G;;;SACQ,Y;MAAQ,OAAA,UAAM,a;K;;;;SAEf,Y;MAAQ,OAAA,UAAM,Y;K;;;;SAEb,Y;MAAQ,OAAA,UAAM,a;K;;;;SAEnB,Y;MAAQ,OAAA,UAAM,Q;K;;;;SAEd,Y;MAAQ,OAAA,UAAM,Q;K;;;;SAEhB,Y;MAAQ,OAAA,UAAM,M;K;;;;SAEf,Y;MAAQ,OAAA,UAAM,K;K;;;;SAEb,Y;MAAQ,OAAA,UAAM,M;K;;;;SAGL,Y;MAAQ,OAAA,UAAM,iB;K;;;;SAEhB,Y;MAAQ,OAAA,UAAM,gB;K;;wCAEvC,iB;IAAgD,OAAA,UAAM,iBAAU,KAAM,MAAhB,C;G;mCAEtD,Y;IAA4B,OAAS,cAAP,UAAD,aAAQ,C;G;kCACrC,Y;IAA2B,OAAS,cAAP,UAAD,YAAQ,C;G;qCAEpC,iB;IAAiD,OAAsB,cAArB,wBAAQ,KAAM,MAAd,CAAqB,C;G;qCACvE,iB;IAAsD,OAAsB,cAArB,wBAAQ,KAAM,MAAd,CAAqB,C;G;qCAC5E,iB;IAAyD,OAAgB,cAAf,wBAAQ,KAAR,CAAe,C;G;sCAEzE,iB;IAAkD,OAA2B,cAA1B,IAAK,MAAL,eAAa,KAAM,MAAnB,CAA0B,C;G;sCAC7E,iB;IAAuD,OAA2B,cAA1B,IAAK,MAAL,eAAa,KAAM,MAAnB,CAA0B,C;G;sCAClF,iB;IAA0D,OAA2B,cAA1B,IAAK,MAAL,eAAmB,UAAN,KAAM,CAAnB,CAA0B,C;G;sCAErF,iB;IAA4C,OAAgB,cAAf,yBAAQ,KAAR,CAAe,C;G;sCAC5D,iB;IAA+C,OAAgB,cAAf,yBAAQ,KAAR,CAAe,C;G;oCAE/D,iB;IAA0C,OAAgB,cAAf,uBAAQ,KAAR,CAAe,C;G;oCAC1D,iB;IAA6C,OAAgB,cAAf,uBAAQ,KAAR,CAAe,C;G;oCAE7D,iB;IAA6C,OAAA,IAAK,MAAL,aAAa,KAAM,MAAnB,C;G;oCAC7C,iB;IAAgD,OAA2B,cAA1B,IAAK,MAAL,aAAa,KAAM,MAAnB,CAA0B,C;G;EAE3E,+B;IAAA,mC;IACI,4B;G;;;SAMS,Y;MAAQ,OAAc,cAAd,gCAAS,KAAK,C;K;;;;SAOvB,Y;MAAQ,OAAa,cAAb,gCAAS,IAAI,C;K;;;;;;;;EAdjC,2C;IAAA,0C;MAAA,yB;KAAA,mC;G;4CAiBA,uC;IAYiB,0B;MAAA,aAAkB,C;IAAG,+B;MAAA,kBAA2B,K;IAAiB,OAAM,aAAN,UAAM,EAAa,UAAb,EAAyB,eAAzB,C;G;iCAExF,Y;IAAkC,OAAA,UAAM,W;G;;;;;;mCAnF5C,Y;IAQqB,iB;G;qCARrB,iB;IAAA,qBAQqB,qCARrB,C;G;iCAAA,Y;IAAA,c;IAQqB,sD;IARrB,a;G;+BAAA,iB;IAAA,2IAQqB,sCARrB,G;G;EAsFA,qB;IACiD,OAAsB,cAAtB,MAAI,CAAE,MAAN,EAAa,CAAE,MAAf,CAAsB,C;G;EACvE,qB;IACiD,OAAsB,cAAtB,MAAI,CAAE,MAAN,EAAa,CAAE,MAAf,CAAsB,C;G;EACvE,sC;IACsD,OAAkC,cAA5B,QAAN,eAAM,EAAM,GAAI,MAAV,EAAiB,GAAI,MAArB,CAA4B,C;G;EC7F7D,kC;IAAQ,2BAAgB,SAAhB,C;G;EAWT,gC;IAkBtB,uC;IAlBuB,kB;G;;;SAED,Y;MAAQ,OAAA,UAAM,S;K;;;;SAG3B,Y;MAAQ,OAAW,cAAX,UAAM,KAAK,C;K;;;;SAGH,Y;MAAQ,OAAA,UAAM,a;K;;;;SAGnB,Y;MAAQ,OAAA,UAAM,gB;K;;;;SAGb,Y;MAAQ,OAAA,UAAM,S;K;;uCAEnC,Y;IAAkC,OAAA,UAAM,W;G;EAExC,qC;IAAA,yC;IACI,4B;G;uDAGA,gB;IACuC,OAA2B,cAA3B,sDAAe,IAAK,MAApB,CAA2B,C;G;sDAElE,gB;IAK6B,OAAiC,cAAjC,sCAAe,eAAM,IAAK,MAAX,CAAkB,C;G;;;;;;;EAZlE,iD;IAAA,gD;MAAA,+B;KAAA,yC;G;;;;;;yCA3BJ,Y;IAS2B,iB;G;2CAT3B,iB;IAAA,2BAS2B,qCAT3B,C;G;uCAAA,Y;IAAA,c;IAS2B,sD;IAT3B,a;G;qCAAA,iB;IAAA,2IAS2B,sCAT3B,G;G;EA6CqB,iC;IAAQ,OAAkB,cAAP,WAAX,SAAK,MAAM,CAAO,C;G;EC/C9B,kC;IAAQ,iBAAM,SAAN,C;G;EAaT,sB;IACZ,6B;IADa,kB;G;EACb,2B;IAAA,+B;IACI,4B;IAyCA,mBAGwB,G;IAExB,iBAGsB,G;G;8CA9CtB,gB;IAKyB,OAAW,cAAX,SAAK,IAAL,CAAW,C;G;oDAEpC,gB;IAGwC,OAAA,4BAAK,uBAAc,IAAd,C;G;6CAE7C,gB;IAGiC,OAAA,4BAAK,gBAAO,IAAP,C;G;+CAEtC,gB;IAGiC,OAAoB,cAApB,4BAAK,kBAAS,IAAT,CAAe,C;G;2CAErD,kB;IAI4B,OAAA,4BAAK,cAAK,MAAL,C;G;wDAEjC,gB;IAGwC,OAAA,4BAAK,2BAAkB,IAAlB,C;G;mDAE7C,gB;IAGmC,OAAA,4BAAK,sBAAa,IAAb,C;G;;;;;;;EAxC5C,uC;IAAA,sC;MAAA,qB;KAAA,+B;G;;;SAwDkB,Y;MAAQ,OAAA,UAAM,c;K;;;;SAKrB,Y;MAAQ,OAAA,UAAM,O;K;;;;SAKX,Y;MAAQ,OAAA,UAAM,K;K;;;;SAKD,Y;MAAQ,OAAA,UAAM,kB;K;;;;SAKnB,Y;MAAQ,OAAA,UAAM,a;K;;oCAEpC,iB;IAG4C,OAAA,IAAK,MAAM,iBAAU,KAAM,MAAhB,C;G;iCAEvD,iB;IAAuC,OAAgB,cAAf,wBAAQ,KAAR,CAAe,C;G;kCACvD,iB;IAAwC,OAAgB,cAAf,yBAAQ,KAAR,CAAe,C;G;kCACxD,iB;IAAwC,gCAAQ,KAAM,MAAd,C;G;;;;;;+BAjG5C,Y;IAWiB,iB;G;iCAXjB,iB;IAAA,iBAWiB,qCAXjB,C;G;6BAAA,Y;IAAA,OAWiB,4CAXjB,M;G;6BAAA,Y;IAAA,c;IAWiB,sD;IAXjB,a;G;2BAAA,iB;IAAA,2IAWiB,sCAXjB,G;G;ECFsB,mC;IAAQ,sBAAW,SAAX,C;G;EAQT,2B;IACjB,kC;IADkB,kB;G;EAClB,gC;IAAA,oC;IACI,4B;G;kDAGA,uB;IACkD,OAA6B,eAA7B,iDAAU,IAAK,MAAf,EAAsB,KAAtB,CAA6B,C;G;gDAC/E,uB;IACgD,OAAuB,eAAvB,+CAAU,IAAV,EAAgB,KAAhB,CAAuB,C;G;kDACvE,wB;IAC8C,OAAwB,eAAxB,iDAAU,IAAV,EAAgB,MAAhB,CAAwB,C;G;;;;;;;EAT1E,4C;IAAA,2C;MAAA,0B;KAAA,oC;G;;;SAae,Y;MAAQ,OAAA,UAAM,K;K;;;;SAEZ,Y;MAAQ,OAAA,UAAM,Q;K;;;;SAGb,Y;MAAQ,OAAA,UAAM,M;K;;;;SAEhB,Y;MAAQ,OAAA,UAAM,O;K;;;;SAGhB,Y;MAAQ,OAAA,UAAM,K;K;;;;SAEP,Y;MAAQ,OAAA,UAAM,Y;K;;;;SAEhB,Y;MAAQ,OAAA,UAAM,U;K;;sCAEjC,gB;IAAmD,OAA0B,eAAzB,IAAK,MAAL,cAAa,IAAK,MAAlB,CAAyB,C;G;uCAC7E,gB;IAAmD,OAA0B,eAAzB,IAAK,MAAL,eAAa,IAAK,MAAlB,CAAyB,C;G;kCAE7E,Y;IAAkC,OAAE,UAAF,oBAAS,Y;G;;;;;;oCAvC/C,Y;IAMsB,iB;G;sCANtB,iB;IAAA,sBAMsB,qCANtB,C;G;kCAAA,Y;IAAA,c;IAMsB,sD;IANtB,a;G;gCAAA,iB;IAAA,2IAMsB,sCANtB,G;G;EA0CA,uC;IAIqC,OAA4B,eAAjB,UAAX,SAAK,MAAM,EAAU,KAAV,CAAiB,C;G;EAEjE,qC;IAImC,OAA0B,eAArB,SAAL,SAAK,EAAS,IAAK,MAAd,CAAqB,C;G;EC3D7D,sC;IAAyE,YAAK,WAAL,C;G;EACzE,qC;IAAwE,YAAK,WAAL,C;G;EAEhC,iC;IACpC,aAAsB,O;G;;;;;;EAG1B,qB;G;6IACI,oB;IAA8D,iB;G;;;;;;;;ECDrB,gC;IAAE,OAAA,OAAQ,S;EAAS,C;;EAAhE,6B;WtEkC4F,mB;G;EsEhC5F,yB;IAAA,6B;G;;;SACmC,Y;MAAQ,OAA3C,IAAI,IAAwC,E;K;;;;SAEX,Y;MACzB,W;QACI,aAA4B,OAAQ,QAAO,mBAAP,C;QAFP,OAG7B,kCAAW,qBAAY,OAAO,CAAP,CAAZ,CAAX,cAAoC,kCAAW,yBAAgB,OAAO,CAAP,CAAhB,CAA/C,C;;QAH6B,OAM7B,kCAAW,0BAAiB,MAAO,YAAY,MAApC,C;;K;;+DAInB,gB;IACI,YACY,IAAK,iB;IACqD,gBAA/D,CAAG,CAAhB,IAAI,IAAJ,CAAS,KAAT,CAAgB,mBAAkB,E;IAA5B,OzEsBuB,kBAAS,qBAAiB,SAAjB,C;EyErBpC,C;0CAEA,gB;IACI,SAAS,IAAT,C;EACJ,C;;;;;;;EArBJ,qC;IAAA,oC;MAAA,mB;KAAA,6B;G;;;;;;;;ECNA,+B;IAAwB,oBAAS,SAAK,UAAd,C;G;EACxB,2B;IAAwB,gBAAK,SAAK,iBAAV,C;G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sB7BFe,I;sBACA,K;oBACF,O;mBACD,Q;oBACC,S;0BCET,oBACxB,WAAU,IAAI,EAAJ,EAAS,EAAT,CAAV,CADwB,EAExB,WAAU,IAAI,CAAJ,EAAQ,EAAR,CAAV,CAFwB,EAGxB,UAAS,IAAI,EAAJ,CAAT,CAHwB,EAIxB,YAAW,IAAI,CAAJ,EAAQ,EAAR,CAAX,CAJwB,EAKxB,UAAS,IAAI,EAAJ,CAAT,CALwB,EAMxB,WAAU,IAAI,EAAJ,CAAV,CANwB,EAOxB,WAAU,IAAI,EAAJ,CAAV,CAPwB,EAQxB,UAAS,IAAI,CAAJ,EAAQ,EAAR,CAAT,CARwB,EASxB,WAAU,IAAI,EAAJ,CAAV,CATwB,EAUxB,WAAU,IAAI,EAAJ,CAAV,CAVwB,EAWxB,WAAU,IAAI,CAAJ,CAAV,CAXwB,EAYxB,WAAU,IAAI,EAAJ,CAAV,CAZwB,EAaxB,UAAS,IAAI,EAAJ,CAAT,CAbwB,EAcxB,UAAS,IAAI,CAAJ,CAAT,CAdwB,EAexB,WAAU,IAAI,EAAJ,CAAV,CAfwB,EAgBxB,WAAU,IAAI,CAAJ,CAAV,CAhBwB,EAiBxB,UAAS,IAAI,EAAJ,CAAT,CAjBwB,EAkBxB,UAAS,IAAI,CAAJ,CAAT,CAlBwB,EAmBxB,UAAS,IAAI,EAAJ,CAAT,CAnBwB,EAoBxB,WAAU,IAAI,CAAJ,CAAV,CApBwB,EAqBxB,YAAW,IAAI,CAAJ,CAAX,CArBwB,EAsBxB,WAAU,IAAI,EAAJ,CAAV,CAtBwB,EAuBxB,UAAS,IAAI,CAAJ,CAAT,CAvBwB,EAwBxB,UAAS,IAAI,CAAJ,CAAT,CAxBwB,EAyBxB,WAAU,IAAI,CAAJ,CAAV,CAzBwB,EA0BxB,UAAS,IAAI,GAAJ,CAAT,CA1BwB,EA2BxB,UAAS,IAAI,EAAJ,CAAT,CA3BwB,EA4BxB,WAAU,IAAI,EAAJ,CAAV,CA5BwB,EA6BxB,UAAS,IAAI,EAAJ,CAAT,CA7BwB,EA8BxB,UAAS,IAAI,CAAJ,CAAT,CA9BwB,EA+BxB,UAAS,IAAI,EAAJ,CAAT,CA/BwB,EAgCxB,UAAS,IAAI,CAAJ,CAAT,CAhCwB,EAiCxB,UAAS,IAAI,CAAJ,CAAT,CAjCwB,EAkCxB,UAAS,IAAI,CAAJ,CAAT,CAlCwB,EAmCxB,UAAS,IAAI,CAAJ,EAAQ,EAAR,CAAT,CAnCwB,EAoCxB,UAAS,IAAI,EAAJ,CAAT,CApCwB,EAqCxB,UAAS,IAAI,EAAJ,CAAT,CArCwB,EAsCxB,WAAU,IAAI,CAAJ,CAAV,CAtCwB,EAuCxB,UAAS,IAAI,CAAJ,CAAT,CAvCwB,EAwCxB,YAAW,IAAI,EAAJ,EAAS,EAAT,CAAX,CAxCwB,EAyCxB,YAAW,IAAI,EAAJ,EAAS,EAAT,CAAX,CAzCwB,EA0CxB,WAAU,IAAI,CAAJ,CAAV,CA1CwB,EA2CxB,YAAW,IAAI,CAAJ,CAAX,CA3CwB,EA4CxB,WAAU,IAAI,EAAJ,CAAV,CA5CwB,EA6CxB,WAAU,IAAI,EAAJ,CAAV,CA7CwB,EA8CxB,WAAU,IAAI,EAAJ,CAAV,CA9CwB,EA+CxB,UAAS,IAAI,CAAJ,CAAT,CA/CwB,EAgDxB,UAAS,IAAI,GAAJ,CAAT,CAhDwB,EAiDxB,WAAU,IAAI,EAAJ,CAAV,CAjDwB,EAkDxB,UAAS,IAAI,EAAJ,CAAT,CAlDwB,EAmDxB,WAAU,IAAI,EAAJ,CAAV,CAnDwB,EAoDxB,UAAS,IAAI,EAAJ,CAAT,CApDwB,EAqDxB,UAAS,IAAI,EAAJ,CAAT,CArDwB,EAsDxB,UAAS,IAAI,CAAJ,CAAT,CAtDwB,EAuDxB,UAAS,IAAI,EAAJ,CAAT,CAvDwB,EAwDxB,SAAQ,IAAI,CAAJ,CAAR,CAxDwB,EAyDxB,UAAS,IAAI,EAAJ,CAAT,CAzDwB,EA0DxB,WAAU,IAAI,CAAJ,EAAQ,EAAR,CAAV,CA1DwB,EA2DxB,UAAS,IAAI,CAAJ,CAAT,CA3DwB,EA4DxB,WAAU,IAAI,CAAJ,CAAV,CA5DwB,EA6DxB,WAAU,IAAI,EAAJ,CAAV,CA7DwB,EA8DxB,UAAS,IAAI,CAAJ,CAAT,CA9DwB,EA+DxB,YAAW,IAAI,EAAJ,CAAX,CA/DwB,EAgExB,WAAU,IAAI,EAAJ,CAAV,CAhEwB,EAiExB,UAAS,IAAI,CAAJ,CAAT,CAjEwB,EAkExB,UAAS,IAAI,EAAJ,CAAT,CAlEwB,EAmExB,UAAS,IAAI,EAAJ,CAAT,CAnEwB,EAoExB,UAAS,IAAI,EAAJ,CAAT,CApEwB,EAqExB,WAAU,IAAI,CAAJ,CAAV,CArEwB,EAsExB,UAAS,IAAI,CAAJ,CAAT,CAtEwB,EAuExB,WAAU,IAAI,CAAJ,CAAV,CAvEwB,EAwExB,UAAS,IAAI,EAAJ,CAAT,CAxEwB,EAyExB,UAAS,IAAI,CAAJ,CAAT,CAzEwB,EA0ExB,UAAS,IAAI,EAAJ,CAAT,CA1EwB,EA2ExB,UAAS,IAAI,CAAJ,CAAT,CA3EwB,EA4ExB,UAAS,IAAI,EAAJ,CAAT,CA5EwB,EA6ExB,WAAU,IAAI,EAAJ,CAAV,CA7EwB,EA8ExB,UAAS,IAAI,EAAJ,CAAT,CA9EwB,EA+ExB,UAAS,IAAI,EAAJ,CAAT,CA/EwB,EAgFxB,WAAU,IAAI,EAAJ,CAAV,CAhFwB,EAiFxB,WAAU,IAAI,EAAJ,CAAV,CAjFwB,EAkFxB,UAAS,IAAI,CAAJ,CAAT,CAlFwB,EAmFxB,UAAS,IAAI,EAAJ,CAAT,CAnFwB,EAoFxB,WAAU,IAAI,EAAJ,CAAV,CApFwB,EAqFxB,UAAS,IAAI,EAAJ,CAAT,CArFwB,EAsFxB,UAAS,IAAI,CAAJ,CAAT,CAtFwB,EAuFxB,UAAS,IAAI,EAAJ,CAAT,CAvFwB,EAwFxB,UAAS,IAAI,CAAJ,CAAT,CAxFwB,EAyFxB,UAAS,IAAI,EAAJ,CAAT,CAzFwB,EA0FxB,UAAS,IAAI,EAAJ,CAAT,CA1FwB,EA2FxB,WAAU,IAAI,CAAJ,CAAV,CA3FwB,EA4FxB,UAAS,IAAI,GAAJ,CAAT,CA5FwB,EA6FxB,UAAS,IAAI,CAAJ,CAAT,CA7FwB,EA8FxB,UAAS,IAAI,CAAJ,CAAT,CA9FwB,EA+FxB,YAAW,IAAI,CAAJ,CAAX,CA/FwB,EAgGxB,WAAU,IAAI,CAAJ,CAAV,CAhGwB,EAiGxB,UAAS,IAAI,CAAJ,CAAT,CAjGwB,EAkGxB,WAAU,IAAI,GAAJ,CAAV,CAlGwB,EAmGxB,UAAS,IAAI,CAAJ,CAAT,CAnGwB,EAoGxB,UAAS,IAAI,CAAJ,CAAT,CApGwB,EAqGxB,WAAU,IAAI,CAAJ,EAAQ,EAAR,CAAV,CArGwB,EAsGxB,WAAU,IAAI,CAAJ,CAAV,CAtGwB,EAuGxB,WAAU,IAAI,CAAJ,EAAQ,EAAR,CAAV,CAvGwB,EAwGxB,UAAS,IAAI,CAAJ,EAAQ,EAAR,CAAT,CAxGwB,EAyGxB,UAAS,IAAI,CAAJ,CAAT,CAzGwB,EA0GxB,UAAS,IAAI,CAAJ,CAAT,CA1GwB,EA2GxB,UAAS,IAAI,CAAJ,CAAT,CA3GwB,EA4GxB,WAAU,IAAI,CAAJ,CAAV,CA5GwB,EA6GxB,UAAS,IAAI,CAAJ,CAAT,CA7GwB,EA8GxB,WAAU,IAAI,EAAJ,CAAV,CA9GwB,EA+GxB,WAAU,IAAI,CAAJ,CAAV,CA/GwB,EAgHxB,UAAS,IAAI,CAAJ,CAAT,CAhHwB,EAiHxB,WAAU,IAAI,EAAJ,EAAS,EAAT,CAAV,CAjHwB,EAkHxB,WAAU,IAAI,EAAJ,CAAV,CAlHwB,EAmHxB,WAAU,IAAI,EAAJ,CAAV,CAnHwB,EAoHxB,WAAU,IAAI,EAAJ,CAAV,CApHwB,EAqHxB,WAAU,IAAI,EAAJ,EAAQ,EAAR,CAAV,CArHwB,EAsHxB,WAAU,IAAI,CAAJ,CAAV,CAtHwB,EAuHxB,UAAS,IAAI,EAAJ,CAAT,CAvHwB,EAwHxB,UAAS,IAAI,CAAJ,CAAT,CAxHwB,EAyHxB,WAAU,IAAI,CAAJ,CAAV,CAzHwB,EA0HxB,UAAS,IAAI,EAAJ,CAAT,CA1HwB,EA2HxB,WAAU,IAAI,EAAJ,CAAV,CA3HwB,EA4HxB,UAAS,IAAI,EAAJ,EAAQ,EAAR,CAAT,CA5HwB,EA6HxB,UAAS,IAAI,CAAJ,EAAQ,EAAR,CAAT,CA7HwB,EA8HxB,UAAS,IAAI,CAAJ,CAAT,CA9HwB,EA+HxB,UAAS,IAAI,CAAJ,CAAT,CA/HwB,EAgIxB,UAAS,IAAI,EAAJ,CAAT,CAhIwB,EAiIxB,UAAS,IAAI,CAAJ,CAAT,CAjIwB,EAkIxB,UAAS,IAAI,CAAJ,CAAT,CAlIwB,EAmIxB,UAAS,IAAI,CAAJ,CAAT,CAnIwB,EAoIxB,UAAS,IAAI,EAAJ,CAAT,CApIwB,EAqIxB,UAAS,IAAI,EAAJ,EAAQ,EAAR,CAAT,CArIwB,EAsIxB,UAAS,IAAI,EAAJ,CAAT,CAtIwB,EAuIxB,WAAU,IAAI,CAAJ,CAAV,CAvIwB,EAwIxB,UAAS,IAAI,CAAJ,EAAQ,EAAR,CAAT,CAxIwB,EAyIxB,UAAS,IAAI,EAAJ,EAAQ,EAAR,CAAT,CAzIwB,EA0IxB,SAAQ,IAAI,EAAJ,EAAQ,EAAR,CAAR,CA1IwB,EA2IxB,UAAS,IAAI,GAAJ,CAAT,CA3IwB,EA4IxB,WAAU,IAAI,EAAJ,CAAV,CA5IwB,EA6IxB,WAAU,IAAI,EAAJ,CAAV,CA7IwB,EA8IxB,WAAU,IAAI,CAAJ,CAAV,CA9IwB,EA+IxB,WAAU,IAAI,CAAJ,CAAV,CA/IwB,EAgJxB,UAAS,IAAI,EAAJ,CAAT,CAhJwB,EAiJxB,UAAS,IAAI,EAAJ,CAAT,CAjJwB,EAkJxB,WAAU,IAAI,EAAJ,CAAV,CAlJwB,EAmJxB,UAAS,IAAI,EAAJ,CAAT,CAnJwB,EAoJxB,WAAU,IAAI,EAAJ,CAAV,CApJwB,EAqJxB,UAAS,IAAI,CAAJ,CAAT,CArJwB,EAsJxB,UAAS,IAAI,CAAJ,CAAT,CAtJwB,EAuJxB,WAAU,IAAI,EAAJ,CAAV,CAvJwB,EAwJxB,WAAU,IAAI,EAAJ,CAAV,CAxJwB,EAyJxB,WAAU,IAAI,EAAJ,CAAV,CAzJwB,EA0JxB,UAAS,IAAI,EAAJ,CAAT,CA1JwB,EA2JxB,UAAS,IAAI,CAAJ,CAAT,CA3JwB,EA4JxB,WAAU,IAAI,EAAJ,CAAV,CA5JwB,EA6JxB,UAAS,IAAI,EAAJ,CAAT,CA7JwB,EA8JxB,UAAS,IAAI,CAAJ,CAAT,CA9JwB,EA+JxB,WAAU,IAAI,EAAJ,CAAV,CA/JwB,EAgKxB,WAAU,IAAI,EAAJ,CAAV,CAhKwB,EAiKxB,WAAU,IAAI,CAAJ,CAAV,CAjKwB,EAkKxB,WAAU,IAAI,CAAJ,CAAV,CAlKwB,EAmKxB,UAAS,IAAI,EAAJ,CAAT,CAnKwB,EAoKxB,UAAS,IAAI,CAAJ,CAAT,CApKwB,EAqKxB,UAAS,IAAI,GAAJ,CAAT,CArKwB,EAsKxB,UAAS,IAAI,CAAJ,CAAT,CAtKwB,EAuKxB,WAAU,IAAI,CAAJ,EAAQ,EAAR,CAAV,CAvKwB,EAwKxB,WAAU,IAAI,EAAJ,CAAV,CAxKwB,EAyKxB,UAAS,IAAI,EAAJ,CAAT,CAzKwB,EA0KxB,UAAS,IAAI,GAAJ,CAAT,CA1KwB,EA2KxB,UAAS,IAAI,CAAJ,CAAT,CA3KwB,EA4KxB,WAAU,IAAI,CAAJ,CAAV,CA5KwB,EA6KxB,WAAU,IAAI,GAAJ,CAAV,CA7KwB,EA8KxB,UAAS,IAAI,CAAJ,CAAT,CA9KwB,EA+KxB,UAAS,IAAI,CAAJ,CAAT,CA/KwB,EAgLxB,UAAS,IAAI,CAAJ,CAAT,CAhLwB,EAiLxB,UAAS,IAAI,EAAJ,CAAT,CAjLwB,EAkLxB,UAAS,IAAI,CAAJ,CAAT,CAlLwB,EAmLxB,UAAS,IAAI,CAAJ,CAAT,CAnLwB,EAoLxB,UAAS,IAAI,CAAJ,CAAT,CApLwB,EAqLxB,UAAS,IAAI,EAAJ,CAAT,CArLwB,EAsLxB,UAAS,IAAI,EAAJ,CAAT,CAtLwB,EAuLxB,YAAW,IAAI,CAAJ,CAAX,CAvLwB,EAwLxB,WAAU,IAAI,CAAJ,CAAV,CAxLwB,EAyLxB,UAAS,IAAI,CAAJ,CAAT,CAzLwB,EA0LxB,WAAU,IAAI,EAAJ,CAAV,CA1LwB,EA2LxB,UAAS,IAAI,EAAJ,CAAT,CA3LwB,EA4LxB,UAAS,IAAI,CAAJ,CAAT,CA5LwB,EA6LxB,UAAS,IAAI,EAAJ,CAAT,CA7LwB,EA8LxB,WAAU,IAAI,EAAJ,CAAV,CA9LwB,EA+LxB,WAAU,IAAI,CAAJ,CAAV,CA/LwB,EAgMxB,WAAU,IAAI,CAAJ,CAAV,CAhMwB,EAiMxB,UAAS,IAAI,EAAJ,CAAT,CAjMwB,EAkMxB,WAAU,IAAI,EAAJ,CAAV,CAlMwB,EAmMxB,WAAU,IAAI,CAAJ,CAAV,CAnMwB,EAoMxB,UAAS,IAAI,CAAJ,CAAT,CApMwB,EAqMxB,WAAU,IAAI,CAAJ,CAAV,CArMwB,EAsMxB,UAAS,IAAI,CAAJ,CAAT,CAtMwB,EAuMxB,UAAS,IAAI,CAAJ,CAAT,CAvMwB,EAwMxB,UAAS,IAAI,CAAJ,CAAT,CAxMwB,EAyMxB,WAAU,IAAI,CAAJ,CAAV,CAzMwB,EA0MxB,WAAU,IAAI,CAAJ,CAAV,CA1MwB,E;wB0BGuB,K;WCL9B,OEIyB,OFJhB,MAAT,EAAoB,WAApB,C;kBACQ,gBAAgB,oBAAhB,C;;;;"}