Improve VectorDrawable's parsing performance
This new implementation does three things to speed up parsing:
- Use a faster float parsing algorithm. This algorithm doesn't attempt
to handle all use cases (in particular, it does not try to parse
NaN/Infinity) but it covers the cases that matter in this domain.
- The parsing of path data is now linear: the data is parsed exactly
once, instead of 3 times in the previous implementation.
- The new float parsing implementation treats the input string as a
stream and parses until the next invalid character. This allows us
to not only avoid going through the data multiple times, but it
removes a significant number of allocations since String.substring
is now unnecessary.
A benchmark written to parse paris_30k.xml yields the following numbers:
Execution time: 1.096s; Allocations: 5.356M
The previous implementation (including recent optimizations) yielded:
Execution time: 1.312s; Allocations: 12.045M
The original implementation yielded:
Execution time: 1.612s; Allocations: 16.210M
Test: FastFloatParserTest
Test: PathParserTest
Test: VectorTest
Test: ImageVectorTest
Change-Id: I3eebd54f376b6ae48c7f682726ed67e8fd755c54
diff --git a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/FastFloatParser.kt b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/FastFloatParser.kt
new file mode 100644
index 0000000..2ffde87
--- /dev/null
+++ b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/FastFloatParser.kt
@@ -0,0 +1,630 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@file:Suppress("NOTHING_TO_INLINE")
+@file:OptIn(ExperimentalUnsignedTypes::class)
+
+package androidx.compose.ui.graphics.vector
+
+/**
+ * The code below is adapted from:
+ * https://github.com/fastfloat/fast_float
+ * https://github.com/lemire/fast_double_parser/
+ * The original C++ implementations are licensed under Apache 2.0
+ */
+
+internal class FloatResult(var value: Float = Float.NaN, var isValid: Boolean = false)
+
+internal class FastFloatParser {
+ companion object {
+ private const val FloatMinExponent = -10
+ private const val FloatMaxExponent = 10
+ private const val FloatSmallestExponent = -325
+ private const val FloatMaxExponentNumber = 1024
+
+ private val PowersOfTen = floatArrayOf(
+ 1e0f, 1e1f, 1e2f, 1e3f, 1e4f, 1e5f, 1e6f, 1e7f, 1e8f, 1e9f, 1e10f
+ )
+
+ /**
+ * Parses the next float in the char sequence [s], starting at offset [start], until at most
+ * the end offset [end]. The results are written in [result]. When a result is valid, the
+ * `result.isValid` is set to `true` and `result.value` contains the parsed float value. If
+ * parsing is unsuccessful, `result.isValid` is false and `result.value` is set to
+ * [Float.NaN].
+ *
+ * This function returns the offset inside the char sequence right after parsing stopped,
+ * successfully or unsuccessfully.
+ */
+ fun nextFloat(s: String, start: Int, end: Int, result: FloatResult): Int {
+ result.value = Float.NaN
+ result.isValid = false
+
+ if (start == end) return start
+
+ var index = start
+ var c = s[index]
+
+ // Check for leading negative sign
+ val isNegative = c == '-'
+ if (isNegative) {
+ index++
+ if (index == end) return index
+
+ // Safe access, we just checked the bounds
+ c = s[index]
+ if (!c.isDigit && c != '.') return index
+ }
+
+ // TODO: Should we use an unsigned long here?
+ var significand = 0L
+ val significandStartIndex = index
+
+ // Parse the integer part
+ while (index != end && c.isDigit) {
+ significand = 10L * significand + (c.code - '0'.code).toLong()
+ c = charAt(s, ++index)
+ }
+
+ val significandEndIndex = index
+ var digitCount = index - significandStartIndex
+
+ var exponent = 0
+ var exponentStartIndex = index
+ var exponentEndIndex = index
+
+ // Parse the fraction
+ if (index != end && c == '.') {
+ index++
+ exponentStartIndex = index
+
+ while (end - index >= 4) {
+ val digits = parseFourDigits(s, index)
+ if (digits < 0) break
+ significand = 10_000L * significand + digits.toLong()
+ index += 4
+ }
+
+ c = charAt(s, index)
+ while (index != end && c.isDigit) {
+ significand = 10L * significand + (c.code - '0'.code).toLong()
+ c = charAt(s, ++index)
+ }
+
+ exponent = exponentStartIndex - index
+ exponentEndIndex = index
+ digitCount -= exponent
+ }
+
+ if (digitCount == 0) return index
+
+ // Parse the exponent part of the float, if present
+ var exponentNumber = 0
+ if ((c.code or 0x20) == 'e'.code) {
+ c = charAt(s, ++index)
+
+ val isExponentNegative = c == '-'
+ if (isExponentNegative || c == '+') {
+ index++
+ }
+
+ c = s[index]
+ while (index != end && c.isDigit) {
+ if (exponentNumber < FloatMaxExponentNumber) {
+ exponentNumber = 10 * exponentNumber + (c.code - '0'.code)
+ }
+ c = charAt(s, ++index)
+ }
+
+ if (isExponentNegative) exponentNumber = -exponentNumber
+ exponent += exponentNumber
+ }
+
+ // TODO: check for f/F suffix?
+
+ var tooManyDigits = false
+
+ // If we have too many digits we need to retry differently and avoid overflows
+ if (digitCount > 19) {
+ var retryIndex = significandStartIndex
+ c = s[retryIndex]
+
+ // First check for the case where the number is 0.0000000xxxx (could be all zeroes)
+ while (index != end && (c == '0' || c == '.')) {
+ if (c == '0') digitCount--
+ c = charAt(s, ++retryIndex)
+ }
+
+ if (digitCount > 19) {
+ tooManyDigits = true
+
+ significand = 0
+ retryIndex = significandStartIndex
+ c = s[retryIndex]
+
+ while (
+ retryIndex != significandEndIndex &&
+ significand.toULong() < 1000000000000000000UL
+ ) {
+ significand = 10L * significand + (c.code - '0'.code).toLong()
+ c = charAt(s, ++retryIndex)
+ }
+
+ if (significand.toULong() >= 1000000000000000000UL) {
+ exponent = significandEndIndex - retryIndex + exponentNumber
+ } else {
+ retryIndex = exponentStartIndex
+ c = s[retryIndex]
+
+ while (
+ retryIndex != exponentEndIndex &&
+ significand.toULong() < 1000000000000000000UL
+ ) {
+ significand = 10L * significand + (c.code - '0'.code).toLong()
+ c = charAt(s, ++retryIndex)
+ }
+ exponent = exponentStartIndex - retryIndex + exponentNumber
+ }
+ }
+ }
+
+ // Fast path
+ if (exponent in FloatMinExponent..FloatMaxExponent &&
+ !tooManyDigits &&
+ significand.toULong() <= 1UL shl 24
+ ) {
+ var f = significand.toFloat()
+ if (exponent < 0) {
+ f /= PowersOfTen[-exponent]
+ } else {
+ f *= PowersOfTen[exponent]
+ }
+
+ result.isValid = true
+ result.value = if (isNegative) -f else f
+
+ return index
+ }
+
+ // Now we need to take the slow path, please refer to the original C++ code for a
+ // complete description of the algorithm
+
+ if (significand == 0L) {
+ result.isValid = true
+ result.value = if (isNegative) -0.0f else 0.0f
+ return index
+ }
+
+ if (exponent !in -126..127) {
+ try {
+ result.value = s.substring(start, index).toFloat()
+ } finally {
+ result.isValid = true
+ }
+ return index
+ }
+
+ val significandFactor = Mantissa64[exponent - FloatSmallestExponent].toLong()
+ var lz = significand.countLeadingZeroBits()
+ significand = significand shl lz
+
+ val upper = fullMultiplicationHighBits(significand, significandFactor)
+ val upperBit = (upper ushr 63).toInt()
+ var mantissa = upper ushr (upperBit + 9)
+ lz += 1 xor upperBit
+
+ if (upper and 0x1ff == 0x1ffL || upper and 0x1ff == 0L && mantissa and 3L == 1L) {
+ try {
+ result.value = s.substring(start, index).toFloat()
+ } finally {
+ result.isValid = true
+ }
+ return index
+ }
+
+ mantissa += 1
+ mantissa = mantissa ushr 1
+
+ if (mantissa >= 1L shl 53) {
+ mantissa = 1L shl 52
+ lz--
+ }
+
+ mantissa = mantissa and (1L shl 52).inv()
+
+ val adjustedExponent = (((152170L + 65536L) * exponent) shr 16) + 1024 + 63
+ val realExponent = adjustedExponent - lz
+ if (realExponent < 1 || realExponent > 2046) {
+ try {
+ result.value = s.substring(start, index).toFloat()
+ } finally {
+ result.isValid = true
+ }
+ return index
+ }
+
+ mantissa = mantissa or (realExponent shl 52)
+ mantissa = mantissa or if (isNegative) 1L shl 63 else 0L
+
+ result.isValid = true
+ result.value = Double.fromBits(mantissa).toFloat()
+
+ return index
+ }
+
+ private val Mantissa64 = ulongArrayOf(
+ 0xa5ced43b7e3e9188UL, 0xcf42894a5dce35eaUL,
+ 0x818995ce7aa0e1b2UL, 0xa1ebfb4219491a1fUL,
+ 0xca66fa129f9b60a6UL, 0xfd00b897478238d0UL,
+ 0x9e20735e8cb16382UL, 0xc5a890362fddbc62UL,
+ 0xf712b443bbd52b7bUL, 0x9a6bb0aa55653b2dUL,
+ 0xc1069cd4eabe89f8UL, 0xf148440a256e2c76UL,
+ 0x96cd2a865764dbcaUL, 0xbc807527ed3e12bcUL,
+ 0xeba09271e88d976bUL, 0x93445b8731587ea3UL,
+ 0xb8157268fdae9e4cUL, 0xe61acf033d1a45dfUL,
+ 0x8fd0c16206306babUL, 0xb3c4f1ba87bc8696UL,
+ 0xe0b62e2929aba83cUL, 0x8c71dcd9ba0b4925UL,
+ 0xaf8e5410288e1b6fUL, 0xdb71e91432b1a24aUL,
+ 0x892731ac9faf056eUL, 0xab70fe17c79ac6caUL,
+ 0xd64d3d9db981787dUL, 0x85f0468293f0eb4eUL,
+ 0xa76c582338ed2621UL, 0xd1476e2c07286faaUL,
+ 0x82cca4db847945caUL, 0xa37fce126597973cUL,
+ 0xcc5fc196fefd7d0cUL, 0xff77b1fcbebcdc4fUL,
+ 0x9faacf3df73609b1UL, 0xc795830d75038c1dUL,
+ 0xf97ae3d0d2446f25UL, 0x9becce62836ac577UL,
+ 0xc2e801fb244576d5UL, 0xf3a20279ed56d48aUL,
+ 0x9845418c345644d6UL, 0xbe5691ef416bd60cUL,
+ 0xedec366b11c6cb8fUL, 0x94b3a202eb1c3f39UL,
+ 0xb9e08a83a5e34f07UL, 0xe858ad248f5c22c9UL,
+ 0x91376c36d99995beUL, 0xb58547448ffffb2dUL,
+ 0xe2e69915b3fff9f9UL, 0x8dd01fad907ffc3bUL,
+ 0xb1442798f49ffb4aUL, 0xdd95317f31c7fa1dUL,
+ 0x8a7d3eef7f1cfc52UL, 0xad1c8eab5ee43b66UL,
+ 0xd863b256369d4a40UL, 0x873e4f75e2224e68UL,
+ 0xa90de3535aaae202UL, 0xd3515c2831559a83UL,
+ 0x8412d9991ed58091UL, 0xa5178fff668ae0b6UL,
+ 0xce5d73ff402d98e3UL, 0x80fa687f881c7f8eUL,
+ 0xa139029f6a239f72UL, 0xc987434744ac874eUL,
+ 0xfbe9141915d7a922UL, 0x9d71ac8fada6c9b5UL,
+ 0xc4ce17b399107c22UL, 0xf6019da07f549b2bUL,
+ 0x99c102844f94e0fbUL, 0xc0314325637a1939UL,
+ 0xf03d93eebc589f88UL, 0x96267c7535b763b5UL,
+ 0xbbb01b9283253ca2UL, 0xea9c227723ee8bcbUL,
+ 0x92a1958a7675175fUL, 0xb749faed14125d36UL,
+ 0xe51c79a85916f484UL, 0x8f31cc0937ae58d2UL,
+ 0xb2fe3f0b8599ef07UL, 0xdfbdcece67006ac9UL,
+ 0x8bd6a141006042bdUL, 0xaecc49914078536dUL,
+ 0xda7f5bf590966848UL, 0x888f99797a5e012dUL,
+ 0xaab37fd7d8f58178UL, 0xd5605fcdcf32e1d6UL,
+ 0x855c3be0a17fcd26UL, 0xa6b34ad8c9dfc06fUL,
+ 0xd0601d8efc57b08bUL, 0x823c12795db6ce57UL,
+ 0xa2cb1717b52481edUL, 0xcb7ddcdda26da268UL,
+ 0xfe5d54150b090b02UL, 0x9efa548d26e5a6e1UL,
+ 0xc6b8e9b0709f109aUL, 0xf867241c8cc6d4c0UL,
+ 0x9b407691d7fc44f8UL, 0xc21094364dfb5636UL,
+ 0xf294b943e17a2bc4UL, 0x979cf3ca6cec5b5aUL,
+ 0xbd8430bd08277231UL, 0xece53cec4a314ebdUL,
+ 0x940f4613ae5ed136UL, 0xb913179899f68584UL,
+ 0xe757dd7ec07426e5UL, 0x9096ea6f3848984fUL,
+ 0xb4bca50b065abe63UL, 0xe1ebce4dc7f16dfbUL,
+ 0x8d3360f09cf6e4bdUL, 0xb080392cc4349decUL,
+ 0xdca04777f541c567UL, 0x89e42caaf9491b60UL,
+ 0xac5d37d5b79b6239UL, 0xd77485cb25823ac7UL,
+ 0x86a8d39ef77164bcUL, 0xa8530886b54dbdebUL,
+ 0xd267caa862a12d66UL, 0x8380dea93da4bc60UL,
+ 0xa46116538d0deb78UL, 0xcd795be870516656UL,
+ 0x806bd9714632dff6UL, 0xa086cfcd97bf97f3UL,
+ 0xc8a883c0fdaf7df0UL, 0xfad2a4b13d1b5d6cUL,
+ 0x9cc3a6eec6311a63UL, 0xc3f490aa77bd60fcUL,
+ 0xf4f1b4d515acb93bUL, 0x991711052d8bf3c5UL,
+ 0xbf5cd54678eef0b6UL, 0xef340a98172aace4UL,
+ 0x9580869f0e7aac0eUL, 0xbae0a846d2195712UL,
+ 0xe998d258869facd7UL, 0x91ff83775423cc06UL,
+ 0xb67f6455292cbf08UL, 0xe41f3d6a7377eecaUL,
+ 0x8e938662882af53eUL, 0xb23867fb2a35b28dUL,
+ 0xdec681f9f4c31f31UL, 0x8b3c113c38f9f37eUL,
+ 0xae0b158b4738705eUL, 0xd98ddaee19068c76UL,
+ 0x87f8a8d4cfa417c9UL, 0xa9f6d30a038d1dbcUL,
+ 0xd47487cc8470652bUL, 0x84c8d4dfd2c63f3bUL,
+ 0xa5fb0a17c777cf09UL, 0xcf79cc9db955c2ccUL,
+ 0x81ac1fe293d599bfUL, 0xa21727db38cb002fUL,
+ 0xca9cf1d206fdc03bUL, 0xfd442e4688bd304aUL,
+ 0x9e4a9cec15763e2eUL, 0xc5dd44271ad3cdbaUL,
+ 0xf7549530e188c128UL, 0x9a94dd3e8cf578b9UL,
+ 0xc13a148e3032d6e7UL, 0xf18899b1bc3f8ca1UL,
+ 0x96f5600f15a7b7e5UL, 0xbcb2b812db11a5deUL,
+ 0xebdf661791d60f56UL, 0x936b9fcebb25c995UL,
+ 0xb84687c269ef3bfbUL, 0xe65829b3046b0afaUL,
+ 0x8ff71a0fe2c2e6dcUL, 0xb3f4e093db73a093UL,
+ 0xe0f218b8d25088b8UL, 0x8c974f7383725573UL,
+ 0xafbd2350644eeacfUL, 0xdbac6c247d62a583UL,
+ 0x894bc396ce5da772UL, 0xab9eb47c81f5114fUL,
+ 0xd686619ba27255a2UL, 0x8613fd0145877585UL,
+ 0xa798fc4196e952e7UL, 0xd17f3b51fca3a7a0UL,
+ 0x82ef85133de648c4UL, 0xa3ab66580d5fdaf5UL,
+ 0xcc963fee10b7d1b3UL, 0xffbbcfe994e5c61fUL,
+ 0x9fd561f1fd0f9bd3UL, 0xc7caba6e7c5382c8UL,
+ 0xf9bd690a1b68637bUL, 0x9c1661a651213e2dUL,
+ 0xc31bfa0fe5698db8UL, 0xf3e2f893dec3f126UL,
+ 0x986ddb5c6b3a76b7UL, 0xbe89523386091465UL,
+ 0xee2ba6c0678b597fUL, 0x94db483840b717efUL,
+ 0xba121a4650e4ddebUL, 0xe896a0d7e51e1566UL,
+ 0x915e2486ef32cd60UL, 0xb5b5ada8aaff80b8UL,
+ 0xe3231912d5bf60e6UL, 0x8df5efabc5979c8fUL,
+ 0xb1736b96b6fd83b3UL, 0xddd0467c64bce4a0UL,
+ 0x8aa22c0dbef60ee4UL, 0xad4ab7112eb3929dUL,
+ 0xd89d64d57a607744UL, 0x87625f056c7c4a8bUL,
+ 0xa93af6c6c79b5d2dUL, 0xd389b47879823479UL,
+ 0x843610cb4bf160cbUL, 0xa54394fe1eedb8feUL,
+ 0xce947a3da6a9273eUL, 0x811ccc668829b887UL,
+ 0xa163ff802a3426a8UL, 0xc9bcff6034c13052UL,
+ 0xfc2c3f3841f17c67UL, 0x9d9ba7832936edc0UL,
+ 0xc5029163f384a931UL, 0xf64335bcf065d37dUL,
+ 0x99ea0196163fa42eUL, 0xc06481fb9bcf8d39UL,
+ 0xf07da27a82c37088UL, 0x964e858c91ba2655UL,
+ 0xbbe226efb628afeaUL, 0xeadab0aba3b2dbe5UL,
+ 0x92c8ae6b464fc96fUL, 0xb77ada0617e3bbcbUL,
+ 0xe55990879ddcaabdUL, 0x8f57fa54c2a9eab6UL,
+ 0xb32df8e9f3546564UL, 0xdff9772470297ebdUL,
+ 0x8bfbea76c619ef36UL, 0xaefae51477a06b03UL,
+ 0xdab99e59958885c4UL, 0x88b402f7fd75539bUL,
+ 0xaae103b5fcd2a881UL, 0xd59944a37c0752a2UL,
+ 0x857fcae62d8493a5UL, 0xa6dfbd9fb8e5b88eUL,
+ 0xd097ad07a71f26b2UL, 0x825ecc24c873782fUL,
+ 0xa2f67f2dfa90563bUL, 0xcbb41ef979346bcaUL,
+ 0xfea126b7d78186bcUL, 0x9f24b832e6b0f436UL,
+ 0xc6ede63fa05d3143UL, 0xf8a95fcf88747d94UL,
+ 0x9b69dbe1b548ce7cUL, 0xc24452da229b021bUL,
+ 0xf2d56790ab41c2a2UL, 0x97c560ba6b0919a5UL,
+ 0xbdb6b8e905cb600fUL, 0xed246723473e3813UL,
+ 0x9436c0760c86e30bUL, 0xb94470938fa89bceUL,
+ 0xe7958cb87392c2c2UL, 0x90bd77f3483bb9b9UL,
+ 0xb4ecd5f01a4aa828UL, 0xe2280b6c20dd5232UL,
+ 0x8d590723948a535fUL, 0xb0af48ec79ace837UL,
+ 0xdcdb1b2798182244UL, 0x8a08f0f8bf0f156bUL,
+ 0xac8b2d36eed2dac5UL, 0xd7adf884aa879177UL,
+ 0x86ccbb52ea94baeaUL, 0xa87fea27a539e9a5UL,
+ 0xd29fe4b18e88640eUL, 0x83a3eeeef9153e89UL,
+ 0xa48ceaaab75a8e2bUL, 0xcdb02555653131b6UL,
+ 0x808e17555f3ebf11UL, 0xa0b19d2ab70e6ed6UL,
+ 0xc8de047564d20a8bUL, 0xfb158592be068d2eUL,
+ 0x9ced737bb6c4183dUL, 0xc428d05aa4751e4cUL,
+ 0xf53304714d9265dfUL, 0x993fe2c6d07b7fabUL,
+ 0xbf8fdb78849a5f96UL, 0xef73d256a5c0f77cUL,
+ 0x95a8637627989aadUL, 0xbb127c53b17ec159UL,
+ 0xe9d71b689dde71afUL, 0x9226712162ab070dUL,
+ 0xb6b00d69bb55c8d1UL, 0xe45c10c42a2b3b05UL,
+ 0x8eb98a7a9a5b04e3UL, 0xb267ed1940f1c61cUL,
+ 0xdf01e85f912e37a3UL, 0x8b61313bbabce2c6UL,
+ 0xae397d8aa96c1b77UL, 0xd9c7dced53c72255UL,
+ 0x881cea14545c7575UL, 0xaa242499697392d2UL,
+ 0xd4ad2dbfc3d07787UL, 0x84ec3c97da624ab4UL,
+ 0xa6274bbdd0fadd61UL, 0xcfb11ead453994baUL,
+ 0x81ceb32c4b43fcf4UL, 0xa2425ff75e14fc31UL,
+ 0xcad2f7f5359a3b3eUL, 0xfd87b5f28300ca0dUL,
+ 0x9e74d1b791e07e48UL, 0xc612062576589ddaUL,
+ 0xf79687aed3eec551UL, 0x9abe14cd44753b52UL,
+ 0xc16d9a0095928a27UL, 0xf1c90080baf72cb1UL,
+ 0x971da05074da7beeUL, 0xbce5086492111aeaUL,
+ 0xec1e4a7db69561a5UL, 0x9392ee8e921d5d07UL,
+ 0xb877aa3236a4b449UL, 0xe69594bec44de15bUL,
+ 0x901d7cf73ab0acd9UL, 0xb424dc35095cd80fUL,
+ 0xe12e13424bb40e13UL, 0x8cbccc096f5088cbUL,
+ 0xafebff0bcb24aafeUL, 0xdbe6fecebdedd5beUL,
+ 0x89705f4136b4a597UL, 0xabcc77118461cefcUL,
+ 0xd6bf94d5e57a42bcUL, 0x8637bd05af6c69b5UL,
+ 0xa7c5ac471b478423UL, 0xd1b71758e219652bUL,
+ 0x83126e978d4fdf3bUL, 0xa3d70a3d70a3d70aUL,
+ 0xccccccccccccccccUL, 0x8000000000000000UL,
+ 0xa000000000000000UL, 0xc800000000000000UL,
+ 0xfa00000000000000UL, 0x9c40000000000000UL,
+ 0xc350000000000000UL, 0xf424000000000000UL,
+ 0x9896800000000000UL, 0xbebc200000000000UL,
+ 0xee6b280000000000UL, 0x9502f90000000000UL,
+ 0xba43b74000000000UL, 0xe8d4a51000000000UL,
+ 0x9184e72a00000000UL, 0xb5e620f480000000UL,
+ 0xe35fa931a0000000UL, 0x8e1bc9bf04000000UL,
+ 0xb1a2bc2ec5000000UL, 0xde0b6b3a76400000UL,
+ 0x8ac7230489e80000UL, 0xad78ebc5ac620000UL,
+ 0xd8d726b7177a8000UL, 0x878678326eac9000UL,
+ 0xa968163f0a57b400UL, 0xd3c21bcecceda100UL,
+ 0x84595161401484a0UL, 0xa56fa5b99019a5c8UL,
+ 0xcecb8f27f4200f3aUL, 0x813f3978f8940984UL,
+ 0xa18f07d736b90be5UL, 0xc9f2c9cd04674edeUL,
+ 0xfc6f7c4045812296UL, 0x9dc5ada82b70b59dUL,
+ 0xc5371912364ce305UL, 0xf684df56c3e01bc6UL,
+ 0x9a130b963a6c115cUL, 0xc097ce7bc90715b3UL,
+ 0xf0bdc21abb48db20UL, 0x96769950b50d88f4UL,
+ 0xbc143fa4e250eb31UL, 0xeb194f8e1ae525fdUL,
+ 0x92efd1b8d0cf37beUL, 0xb7abc627050305adUL,
+ 0xe596b7b0c643c719UL, 0x8f7e32ce7bea5c6fUL,
+ 0xb35dbf821ae4f38bUL, 0xe0352f62a19e306eUL,
+ 0x8c213d9da502de45UL, 0xaf298d050e4395d6UL,
+ 0xdaf3f04651d47b4cUL, 0x88d8762bf324cd0fUL,
+ 0xab0e93b6efee0053UL, 0xd5d238a4abe98068UL,
+ 0x85a36366eb71f041UL, 0xa70c3c40a64e6c51UL,
+ 0xd0cf4b50cfe20765UL, 0x82818f1281ed449fUL,
+ 0xa321f2d7226895c7UL, 0xcbea6f8ceb02bb39UL,
+ 0xfee50b7025c36a08UL, 0x9f4f2726179a2245UL,
+ 0xc722f0ef9d80aad6UL, 0xf8ebad2b84e0d58bUL,
+ 0x9b934c3b330c8577UL, 0xc2781f49ffcfa6d5UL,
+ 0xf316271c7fc3908aUL, 0x97edd871cfda3a56UL,
+ 0xbde94e8e43d0c8ecUL, 0xed63a231d4c4fb27UL,
+ 0x945e455f24fb1cf8UL, 0xb975d6b6ee39e436UL,
+ 0xe7d34c64a9c85d44UL, 0x90e40fbeea1d3a4aUL,
+ 0xb51d13aea4a488ddUL, 0xe264589a4dcdab14UL,
+ 0x8d7eb76070a08aecUL, 0xb0de65388cc8ada8UL,
+ 0xdd15fe86affad912UL, 0x8a2dbf142dfcc7abUL,
+ 0xacb92ed9397bf996UL, 0xd7e77a8f87daf7fbUL,
+ 0x86f0ac99b4e8dafdUL, 0xa8acd7c0222311bcUL,
+ 0xd2d80db02aabd62bUL, 0x83c7088e1aab65dbUL,
+ 0xa4b8cab1a1563f52UL, 0xcde6fd5e09abcf26UL,
+ 0x80b05e5ac60b6178UL, 0xa0dc75f1778e39d6UL,
+ 0xc913936dd571c84cUL, 0xfb5878494ace3a5fUL,
+ 0x9d174b2dcec0e47bUL, 0xc45d1df942711d9aUL,
+ 0xf5746577930d6500UL, 0x9968bf6abbe85f20UL,
+ 0xbfc2ef456ae276e8UL, 0xefb3ab16c59b14a2UL,
+ 0x95d04aee3b80ece5UL, 0xbb445da9ca61281fUL,
+ 0xea1575143cf97226UL, 0x924d692ca61be758UL,
+ 0xb6e0c377cfa2e12eUL, 0xe498f455c38b997aUL,
+ 0x8edf98b59a373fecUL, 0xb2977ee300c50fe7UL,
+ 0xdf3d5e9bc0f653e1UL, 0x8b865b215899f46cUL,
+ 0xae67f1e9aec07187UL, 0xda01ee641a708de9UL,
+ 0x884134fe908658b2UL, 0xaa51823e34a7eedeUL,
+ 0xd4e5e2cdc1d1ea96UL, 0x850fadc09923329eUL,
+ 0xa6539930bf6bff45UL, 0xcfe87f7cef46ff16UL,
+ 0x81f14fae158c5f6eUL, 0xa26da3999aef7749UL,
+ 0xcb090c8001ab551cUL, 0xfdcb4fa002162a63UL,
+ 0x9e9f11c4014dda7eUL, 0xc646d63501a1511dUL,
+ 0xf7d88bc24209a565UL, 0x9ae757596946075fUL,
+ 0xc1a12d2fc3978937UL, 0xf209787bb47d6b84UL,
+ 0x9745eb4d50ce6332UL, 0xbd176620a501fbffUL,
+ 0xec5d3fa8ce427affUL, 0x93ba47c980e98cdfUL,
+ 0xb8a8d9bbe123f017UL, 0xe6d3102ad96cec1dUL,
+ 0x9043ea1ac7e41392UL, 0xb454e4a179dd1877UL,
+ 0xe16a1dc9d8545e94UL, 0x8ce2529e2734bb1dUL,
+ 0xb01ae745b101e9e4UL, 0xdc21a1171d42645dUL,
+ 0x899504ae72497ebaUL, 0xabfa45da0edbde69UL,
+ 0xd6f8d7509292d603UL, 0x865b86925b9bc5c2UL,
+ 0xa7f26836f282b732UL, 0xd1ef0244af2364ffUL,
+ 0x8335616aed761f1fUL, 0xa402b9c5a8d3a6e7UL,
+ 0xcd036837130890a1UL, 0x802221226be55a64UL,
+ 0xa02aa96b06deb0fdUL, 0xc83553c5c8965d3dUL,
+ 0xfa42a8b73abbf48cUL, 0x9c69a97284b578d7UL,
+ 0xc38413cf25e2d70dUL, 0xf46518c2ef5b8cd1UL,
+ 0x98bf2f79d5993802UL, 0xbeeefb584aff8603UL,
+ 0xeeaaba2e5dbf6784UL, 0x952ab45cfa97a0b2UL,
+ 0xba756174393d88dfUL, 0xe912b9d1478ceb17UL,
+ 0x91abb422ccb812eeUL, 0xb616a12b7fe617aaUL,
+ 0xe39c49765fdf9d94UL, 0x8e41ade9fbebc27dUL,
+ 0xb1d219647ae6b31cUL, 0xde469fbd99a05fe3UL,
+ 0x8aec23d680043beeUL, 0xada72ccc20054ae9UL,
+ 0xd910f7ff28069da4UL, 0x87aa9aff79042286UL,
+ 0xa99541bf57452b28UL, 0xd3fa922f2d1675f2UL,
+ 0x847c9b5d7c2e09b7UL, 0xa59bc234db398c25UL,
+ 0xcf02b2c21207ef2eUL, 0x8161afb94b44f57dUL,
+ 0xa1ba1ba79e1632dcUL, 0xca28a291859bbf93UL,
+ 0xfcb2cb35e702af78UL, 0x9defbf01b061adabUL,
+ 0xc56baec21c7a1916UL, 0xf6c69a72a3989f5bUL,
+ 0x9a3c2087a63f6399UL, 0xc0cb28a98fcf3c7fUL,
+ 0xf0fdf2d3f3c30b9fUL, 0x969eb7c47859e743UL,
+ 0xbc4665b596706114UL, 0xeb57ff22fc0c7959UL,
+ 0x9316ff75dd87cbd8UL, 0xb7dcbf5354e9beceUL,
+ 0xe5d3ef282a242e81UL, 0x8fa475791a569d10UL,
+ 0xb38d92d760ec4455UL, 0xe070f78d3927556aUL,
+ 0x8c469ab843b89562UL, 0xaf58416654a6babbUL,
+ 0xdb2e51bfe9d0696aUL, 0x88fcf317f22241e2UL,
+ 0xab3c2fddeeaad25aUL, 0xd60b3bd56a5586f1UL,
+ 0x85c7056562757456UL, 0xa738c6bebb12d16cUL,
+ 0xd106f86e69d785c7UL, 0x82a45b450226b39cUL,
+ 0xa34d721642b06084UL, 0xcc20ce9bd35c78a5UL,
+ 0xff290242c83396ceUL, 0x9f79a169bd203e41UL,
+ 0xc75809c42c684dd1UL, 0xf92e0c3537826145UL,
+ 0x9bbcc7a142b17ccbUL, 0xc2abf989935ddbfeUL,
+ 0xf356f7ebf83552feUL, 0x98165af37b2153deUL,
+ 0xbe1bf1b059e9a8d6UL, 0xeda2ee1c7064130cUL,
+ 0x9485d4d1c63e8be7UL, 0xb9a74a0637ce2ee1UL,
+ 0xe8111c87c5c1ba99UL, 0x910ab1d4db9914a0UL,
+ 0xb54d5e4a127f59c8UL, 0xe2a0b5dc971f303aUL,
+ 0x8da471a9de737e24UL, 0xb10d8e1456105dadUL,
+ 0xdd50f1996b947518UL, 0x8a5296ffe33cc92fUL,
+ 0xace73cbfdc0bfb7bUL, 0xd8210befd30efa5aUL,
+ 0x8714a775e3e95c78UL, 0xa8d9d1535ce3b396UL,
+ 0xd31045a8341ca07cUL, 0x83ea2b892091e44dUL,
+ 0xa4e4b66b68b65d60UL, 0xce1de40642e3f4b9UL,
+ 0x80d2ae83e9ce78f3UL, 0xa1075a24e4421730UL,
+ 0xc94930ae1d529cfcUL, 0xfb9b7cd9a4a7443cUL,
+ 0x9d412e0806e88aa5UL, 0xc491798a08a2ad4eUL,
+ 0xf5b5d7ec8acb58a2UL, 0x9991a6f3d6bf1765UL,
+ 0xbff610b0cc6edd3fUL, 0xeff394dcff8a948eUL,
+ 0x95f83d0a1fb69cd9UL, 0xbb764c4ca7a4440fUL,
+ 0xea53df5fd18d5513UL, 0x92746b9be2f8552cUL,
+ 0xb7118682dbb66a77UL, 0xe4d5e82392a40515UL,
+ 0x8f05b1163ba6832dUL, 0xb2c71d5bca9023f8UL,
+ 0xdf78e4b2bd342cf6UL, 0x8bab8eefb6409c1aUL,
+ 0xae9672aba3d0c320UL, 0xda3c0f568cc4f3e8UL,
+ 0x8865899617fb1871UL, 0xaa7eebfb9df9de8dUL,
+ 0xd51ea6fa85785631UL, 0x8533285c936b35deUL,
+ 0xa67ff273b8460356UL, 0xd01fef10a657842cUL,
+ 0x8213f56a67f6b29bUL, 0xa298f2c501f45f42UL,
+ 0xcb3f2f7642717713UL, 0xfe0efb53d30dd4d7UL,
+ 0x9ec95d1463e8a506UL, 0xc67bb4597ce2ce48UL,
+ 0xf81aa16fdc1b81daUL, 0x9b10a4e5e9913128UL,
+ 0xc1d4ce1f63f57d72UL, 0xf24a01a73cf2dccfUL,
+ 0x976e41088617ca01UL, 0xbd49d14aa79dbc82UL,
+ 0xec9c459d51852ba2UL, 0x93e1ab8252f33b45UL,
+ 0xb8da1662e7b00a17UL, 0xe7109bfba19c0c9dUL,
+ 0x906a617d450187e2UL, 0xb484f9dc9641e9daUL,
+ 0xe1a63853bbd26451UL, 0x8d07e33455637eb2UL,
+ 0xb049dc016abc5e5fUL, 0xdc5c5301c56b75f7UL,
+ 0x89b9b3e11b6329baUL, 0xac2820d9623bf429UL,
+ 0xd732290fbacaf133UL, 0x867f59a9d4bed6c0UL,
+ 0xa81f301449ee8c70UL, 0xd226fc195c6a2f8cUL,
+ 0x83585d8fd9c25db7UL, 0xa42e74f3d032f525UL,
+ 0xcd3a1230c43fb26fUL, 0x80444b5e7aa7cf85UL,
+ 0xa0555e361951c366UL, 0xc86ab5c39fa63440UL,
+ 0xfa856334878fc150UL, 0x9c935e00d4b9d8d2UL,
+ 0xc3b8358109e84f07UL, 0xf4a642e14c6262c8UL,
+ 0x98e7e9cccfbd7dbdUL, 0xbf21e44003acdd2cUL,
+ 0xeeea5d5004981478UL, 0x95527a5202df0ccbUL,
+ 0xbaa718e68396cffdUL, 0xe950df20247c83fdUL,
+ 0x91d28b7416cdd27eUL, 0xb6472e511c81471dUL,
+ 0xe3d8f9e563a198e5UL, 0x8e679c2f5e44ff8fUL
+ )
+ }
+}
+
+private inline val Char.isDigit get() = (this - '0').toChar().code < 10
+
+private inline fun charAt(s: CharSequence, index: Int) = if (index < s.length) {
+ s[index]
+} else {
+ '\u0000'
+}
+
+private inline fun fullMultiplicationHighBits(x: Long, y: Long): Long {
+ val xLo = x and 0xffffffffL
+ val xHi = x ushr 32
+ val yLo = y and 0xffffffffL
+ val yHi = y ushr 32
+
+ val xTimesYHi = xHi * yHi
+ val xTimesYMid = xLo * yHi
+ val yTimesXMid = xHi * yLo
+ val xTimesYLo = xLo * yLo
+
+ val carry =
+ yTimesXMid +
+ (xTimesYLo ushr 32) +
+ (xTimesYMid and 0xffffffffL)
+
+ return xTimesYHi + (carry ushr 32) + (xTimesYMid ushr 32)
+}
+
+private inline fun parseFourDigits(str: CharSequence, offset: Int): Int {
+ val v = (str[offset].code.toLong()
+ or (str[offset + 1].code.toLong() shl 16)
+ or (str[offset + 2].code.toLong() shl 32)
+ or (str[offset + 3].code.toLong() shl 48))
+
+ val base = v - 0x0030003000300030L
+ val predicate = v + 0x0046004600460046L or base
+ return if (predicate and 0xff80_ff80_ff80_ff80UL.toLong() != 0L) {
+ -1
+ } else {
+ (base * 0x03e80064000a0001L ushr 48).toInt()
+ }
+}
diff --git a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/PathParser.kt b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/PathParser.kt
index 8c7ae89..66f1e24e 100644
--- a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/PathParser.kt
+++ b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/PathParser.kt
@@ -49,7 +49,6 @@
internal val EmptyArray = FloatArray(0)
class PathParser {
-
private data class PathPoint(var x: Float = 0.0f, var y: Float = 0.0f) {
fun reset() {
x = 0.0f
@@ -68,45 +67,85 @@
private val segmentPoint = PathPoint()
private val reflectiveCtrlPoint = PathPoint()
- // We need to return the position of the next separator and whether the
- // next float starts with a '-' or a '.'.
- private var resultIndexAdvance = 0
-
- private var results = FloatArray(64)
+ private val floatResult = FloatResult()
+ private var nodeData = FloatArray(64)
/**
* Parses the path string to create a collection of PathNode instances with their corresponding
* arguments
- * throws an IllegalArgumentException or NumberFormatException if the parameters are invalid
*/
fun parsePathString(pathData: String): PathParser {
nodes.clear()
var start = 0
- var end = 1
- while (end < pathData.length) {
- end = nextStart(pathData, end)
+ var end = pathData.length
- // Trim leading and trailing spaces
- var trimEnd = end
- while (start < end && pathData[start] <= ' ') start++
- while (trimEnd > start && pathData[trimEnd - 1] <= ' ') trimEnd--
+ // Holds the floats that describe the points for each command
+ var dataCount = 0
- if (start != trimEnd) {
- val count = getFloats(pathData, start, trimEnd)
- addNodes(pathData[start], results, count)
+ // Trim leading and trailing tabs and spaces
+ while (start < end && pathData[start] <= ' ') start++
+ while (end > start && pathData[end - 1] <= ' ') end--
+
+ var index = start
+ while (index < end) {
+ var c: Char
+ var command = '\u0000'
+
+ // Look for the next command:
+ // A character that's a lower or upper case letter, but not e or E as those can be
+ // part of a float literal (e.g. 1.23e-3).
+ do {
+ c = pathData[index++]
+ val lowerChar = c.code or 0x20
+ if ((lowerChar - 'a'.code) * (lowerChar - 'z'.code) <= 0 && lowerChar != 'e'.code) {
+ command = c
+ break
+ }
+ } while (index < end)
+
+ // We found a command
+ if (command != '\u0000') {
+ // If the command is a close command (z or Z), we don't need to extract floats,
+ // and can proceed to the next command instead
+ if ((command.code or 0x20) != 'z'.code) {
+ dataCount = 0
+
+ do {
+ // Skip any whitespace
+ while (index < end && pathData[index] <= ' ') index++
+
+ // Find the next float and add it to the data array if we got a valid result
+ // An invalid result could be a malformed float, or simply that we reached
+ // the end of the list of floats
+ index = FastFloatParser.nextFloat(pathData, index, end, floatResult)
+
+ if (floatResult.isValid) {
+ nodeData[dataCount++] = floatResult.value
+ resizeNodeData(dataCount)
+ }
+
+ // Skip any commas
+ while (index < end && pathData[index] == ',') index++
+ } while (index < end && floatResult.isValid)
+ }
+
+ addNodes(command, nodeData, dataCount)
}
-
- start = end
- end++
- }
- if (end - start == 1 && start < pathData.length) {
- addNodes(pathData[start], EmptyArray, 0)
}
return this
}
+ @Suppress("NOTHING_TO_INLINE")
+ private inline fun resizeNodeData(dataCount: Int) {
+ if (dataCount >= nodeData.size) {
+ val src = nodeData
+ nodeData = FloatArray(dataCount * 2)
+ src.copyInto(nodeData, 0, 0, src.size)
+ }
+ }
+
fun addPathNodes(nodes: List<PathNode>): PathParser {
this.nodes.addAll(nodes)
return this
@@ -539,92 +578,5 @@
cmd.addPathNodes(nodes, args, count)
}
- private fun nextStart(s: String, end: Int): Int {
- var index = end
- while (index < s.length) {
- val c = s[index]
- // Note that 'e' or 'E' are not valid path commands, but could be
- // used for floating point numbers' scientific notation.
- // Therefore, when searching for next command, we should ignore 'e'
- // and 'E'.
- // Set the high bit to do a case insensitive char comparison
- val lowerChar = c.code or 0x20
- if ((lowerChar - 'a'.code) * (lowerChar - 'z'.code) <= 0 && lowerChar != 'e'.code) {
- return index
- }
- index++
- }
- return index
- }
-
- private fun getFloats(s: String, start: Int, end: Int): Int {
- // Set the high bit to check if the letter is 'z' or 'Z' in one go
- if ((s[start].code or 0x20) == 'z'.code) {
- return 0
- }
-
- var count = 0
- var startPosition = start + 1
-
- // The startPosition should always be the first character of the
- // current number, and endPosition is the character after the current
- // number.
- while (startPosition < end) {
- val endPosition = extract(s, startPosition, end)
-
- if (startPosition < endPosition) {
- results[count++] = s.substring(startPosition, endPosition).toFloat()
- resizeResultsIfNeeded(count)
- }
-
- startPosition = endPosition + resultIndexAdvance
- }
-
- return count
- }
-
- @Suppress("NOTHING_TO_INLINE")
- private inline fun resizeResultsIfNeeded(count: Int) {
- if (count >= results.size) {
- val previous = results
- results = FloatArray(count * 2)
- previous.copyInto(results, 0, 0, previous.size)
- }
- }
-
- private fun extract(s: String, start: Int, end: Int): Int {
- // Now looking for ' ', ',', '.' or '-' from the start.
- var currentIndex = start
-
- resultIndexAdvance = 1
-
- while (currentIndex < end) {
- when (s[currentIndex]) {
- ' ', ',' -> return currentIndex
- '-' ->
- // The negative sign following a 'e' or 'E' is not a separator.
- if (currentIndex != start &&
- // Set the high bit to check if the letter is 'e' or 'E' in one go
- (s[currentIndex - 1].code or 0x20) != 'e'.code
- ) {
- resultIndexAdvance = 0
- return currentIndex
- }
-
- '.' ->
- if (currentIndex != start && s[currentIndex - 1] == '.') {
- // This is the second dot, and it is considered as a separator.
- resultIndexAdvance = 0
- return currentIndex
- }
- }
- currentIndex++
- }
-
- // When there is nothing found, then we put the end position to the end
- // of the string.
- return currentIndex
- }
-
private fun Double.toRadians(): Double = this / 180 * PI
}
diff --git a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/vector/FastFloatParser.kt b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/vector/FastFloatParser.kt
new file mode 100644
index 0000000..d83802a
--- /dev/null
+++ b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/vector/FastFloatParser.kt
@@ -0,0 +1,3376 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.ui.graphics.vector
+
+import kotlin.math.abs
+import kotlin.test.Test
+
+class FastFloatParserTest {
+ @Test
+ fun parseFloats() {
+ val parser = PathParser()
+
+ FloatData.forEach { line ->
+ val (hex, number) = line.split(' ')
+ val bits = hex.toInt(16)
+
+ val nodes = parser.parsePathString("H$number").toNodes()
+
+ assert(nodes.isNotEmpty()) { line }
+
+ val x = (nodes[0] as PathNode.HorizontalTo).x
+
+ assert(abs(x.toBits() - bits) < 2) {
+ "Expected: 0x$bits\n" +
+ "Actual: 0x${x.toBits()}\n" +
+ " in $line (toFloat() = ${number.toFloat()})"
+ }
+ }
+ }
+}
+
+// Data from https://github.com/fastfloat/supplemental_test_files
+// Under Apache 2.0 license
+private val FloatData = arrayOf(
+ "00000000 .0",
+ "00000000 0",
+ "00000000 0.0",
+ "00000000 0.0000",
+ "00000000 0e1",
+ "00000000 0e2",
+ "00000000 0e3",
+ "00000000 0e4395",
+ "00000000 0e47",
+ "00000000 0e4851",
+ "00000000 0e5",
+ "00000000 0e7",
+ "00000000 0e785",
+ "00000000 0e93",
+ "00000000 0e9999999999999999999999999999",
+ "00000000 1e-324",
+ "00000000 1e-500",
+ "00000000 3e-324",
+ "00000000 4.9406564584124653e-324",
+ "00000000 4.9406564584124654e-324",
+ "00000000 1.00000000000000188558920870223463870174566020691753515394643550663070558368373221" +
+ "972569761144603605635692374830246134201063722058e-309",
+ "00000000 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000" +
+ "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +
+ "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +
+ "000000000000000000000000000000000000000000000000000002225073858507200889024586876085859" +
+ "887650423112240959465493524802562440009228235695178775888803759155264230978095043431208" +
+ "587738715835729182199302029437922422355981982750124204178896957131179108226104397197960" +
+ "400045489739193807919893608152561311337614984204327175103362739154978273159414382813627" +
+ "511383860409424946494228631669542910508020181592664213499660651780309507591305871984642" +
+ "390606863710200510872328278467884363194451586613504122347901479236958520832159762106637" +
+ "540161373658304419360371477835530668283453563400507407304013560296804637591858316312422" +
+ "452159926254649430083685186171942241764645513713542013221703137049658321015465406803539" +
+ "741790602258950302350193751977303094576317321085250729930508976158251915",
+ "00000000 2.2250738585072009e-308",
+ "00000000 2.2250738585072013e-308",
+ "00000000 2.2250738585072014e-308",
+ "00000000 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000" +
+ "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +
+ "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +
+ "000000000000000000000000000000000000000000000000000004450147717014402272114819593418263" +
+ "951869639092703291296046852219449644444042153891033059047816270175828298317826079242213" +
+ "740172877389189291055314414815641243486759976282126534658507104573762744298025962244902" +
+ "903779698114444614570510266311510031828794952795966823603998647925096578034214163701381" +
+ "261333311989876551545144031526125381326665295130600018491776632866075559583739224098994" +
+ "780755659409810102161219881460525874257917900007167599934414508608720568157791543592301" +
+ "891033496486942061405218289243144579760516365090360651414037721744226256159024466852576" +
+ "737244643007551333245007965068671949137768847800530996396770975896584413789443379662199" +
+ "396731693628045708486661320679701772891608002069867940855134372886767540",
+ "00000000 1.2e-307",
+ "00000000 1e-300",
+ "00000000 1e-256",
+ "00000000 9007199254740992.e-256",
+ "00000000 1e-128",
+ "00000000 42823146028335318693e-128",
+ "00000000 1e-64",
+ "00000000 7.0060e-46",
+ "00000001 7.0064923216240854e-46",
+ "00000001 1.1754943508e-45",
+ "00000001 1.4012984643e-45",
+ "00000001 0.00000000000000000000000000000000000000000000140129846432481707092372958328991613" +
+ "128026194187651577175706828388979108268586060148663818836212158203125",
+ "007FFFFF 0.00000000000000000000000000000000000001175494210692441075487029444849287348827052" +
+ "428745893333857174530571588870475618904265502351336181163787841796875",
+ "007FFFFF 1.1754942107e-38",
+ "00800000 1.1754943508e-38",
+ "00800000 0.00000000000000000000000000000000000001175494350822287507968736537222245677818665" +
+ "5567720875215087517062784172594547271728515625",
+ "00800003 1.1754947011469036e-38",
+ "00FFFFFF 0.00000000000000000000000000000000000002350988561514728583455765982071533026645717" +
+ "985517980855365926236850006129930346077117064851336181163787841796875",
+ "01000000 2.3509887016445750159374730744444913556373311135441750430175034126e-38",
+ "01800000 4.7019774032891500318749461488889827112746622270883500860350068251e-38",
+ "0A4FB11F 1e-32",
+ "24E69595 1e-16",
+ "29A2212D 7.2e-14",
+ "29E12E13 1e-13",
+ "39102534 0.00013746770127909258",
+ "39BECE41 0.00036393293703440577",
+ "3A6181A6 0.0008602388261351734",
+ "3AD0BAE5 0.0015924838953651488",
+ "3B0D2710 0.002153817447833717",
+ "3B8A536D 0.004221370676532388",
+ "3C467C71 0.012114629615098238",
+ "3CE5EF9A 0.028068351559340954",
+ "3D17CCF0 0.03706067614257336",
+ "3DBE3F17 0.09289376810193062",
+ "3DCCCCCD 0.1",
+ "3E200000 0.15625",
+ "3E200000 0.156250000000000000000000000000000000000000",
+ "3E345144 0.176091259055681",
+ "3E345144 0.1760912590558",
+ "3E5F23F5 0.21791061013936996",
+ "3E943D3B 0.289529654602168",
+ "3E9A209B 0.301029995663981",
+ "3E9A209B 0.30103",
+ "3E9C529D 0.30531780421733856",
+ "3EFFFFFD .4999999",
+ "3F000000 .5",
+ "3F000000 0.5",
+ "3F000002 .5000001",
+ "3F4322D6 0.7622503340244293",
+ "3F800000 1",
+ "3F800000 1e0",
+ "3F800032 1.000006",
+ "3F8147AE 1.01",
+ "3F91EB85 1.14",
+ "3F98089F 1.1877630352973938",
+ "3FA68B6E 1.30113",
+ "3FB0A3D7 1.38",
+ "3FB33333 1.4",
+ "3FC00000 1.5",
+ "3FD9999A 1.7",
+ "3FE66666 1.8",
+ "40000000 2",
+ "40000000 2.0",
+ "40000000 2e0",
+ "400646F1 2.09808",
+ "4019999A 2.4",
+ "402BFB5E 2.687217116355896",
+ "402DF854 2.718281828459045",
+ "402DF854 2.71828182845904523536028747135266249775724709369995",
+ "40400000 3",
+ "40470A3D 3.11",
+ "40490FDB 3.141592653589793",
+ "40490FDB 3.14159265358979323846264338327950288419716939937510",
+ "40490FDB 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899" +
+ "86280348253421170679",
+ "40490FDB 3.14159265359",
+ "40490FF9 3.1416",
+ "404CCCCD 3.2",
+ "40733333 3.8",
+ "4079999A 3.9",
+ "40800000 4",
+ "4083D70A 4.12",
+ "40A00000 5",
+ "40C00000 6",
+ "40C00000 6e0",
+ "40E00000 7",
+ "40E00000 7e0",
+ "40F17C87 7.5464513301849365",
+ "41000000 8",
+ "41100000 9",
+ "41200000 10",
+ "41200000 1e0000001",
+ "41200000 1e01",
+ "41200000 1e1",
+ "41300000 11",
+ "41400000 12",
+ "41500000 13",
+ "415EADE2 13.91745138168335",
+ "41600000 14",
+ "41607AE1 14.03",
+ "41700000 15",
+ "41800000 16",
+ "41880000 17",
+ "418BE43C 17.486443519592285",
+ "41900000 18",
+ "419051EC 18.04",
+ "41980000 19",
+ "41A00000 20",
+ "41A051EC 20.04",
+ "41A80000 21",
+ "41B00000 22",
+ "41B80000 23",
+ "41C00000 24",
+ "41C00000 24e0",
+ "41C6E148 24.86",
+ "41C80000 25",
+ "41D00000 26",
+ "41D00000 26e0",
+ "41D80000 27",
+ "41E00000 28",
+ "41E80000 29",
+ "41F00000 30",
+ "41F00000 3e01",
+ "41F00000 3e1",
+ "41F80000 31",
+ "42000000 32",
+ "42040000 33",
+ "42080000 34",
+ "420C0000 35",
+ "42100000 36",
+ "42140000 37",
+ "42180000 38",
+ "421C0000 39",
+ "42200000 40",
+ "42200000 4e1",
+ "42240000 41",
+ "42280000 42",
+ "422C0000 43",
+ "42300000 44",
+ "42340000 45",
+ "42380000 46",
+ "423C0000 47",
+ "42400000 48",
+ "42440000 49",
+ "42480000 50",
+ "424A70A4 50.61",
+ "424B3F0E 50.811574935913086",
+ "424C0000 51",
+ "42500000 52",
+ "42540000 53",
+ "42580000 54",
+ "425C0000 55",
+ "42600000 56",
+ "42640000 57",
+ "42680000 58",
+ "426C0000 59",
+ "42700000 60",
+ "42700000 6e1",
+ "42740000 61",
+ "42780000 62",
+ "427C0000 63",
+ "42800000 64",
+ "42820000 65",
+ "42840000 66",
+ "42860000 67",
+ "42880000 68",
+ "42887333 68.225",
+ "428A0000 69",
+ "428C0000 70",
+ "428E0000 71",
+ "42900000 72",
+ "42920000 73",
+ "42940000 74",
+ "42960000 75",
+ "42980000 76",
+ "429A0000 77",
+ "429C0000 78",
+ "429E0000 79",
+ "429E0000 79e0",
+ "42A00000 80",
+ "42A00000 8e1",
+ "42A20000 81",
+ "42A40000 82",
+ "42A60000 83",
+ "42A80000 84",
+ "42A80000 84e0",
+ "42AA0000 85",
+ "42AC0000 86",
+ "42AD0F5C 86.53",
+ "42AE0000 87",
+ "42B00000 88",
+ "42B20000 89",
+ "42B40000 90",
+ "42B60000 91",
+ "42B80000 92",
+ "42B80000 92e0",
+ "42BA0000 93",
+ "42BC0000 94",
+ "42BC0000 94e0",
+ "42BE0000 95",
+ "42C00000 96",
+ "42C20000 97",
+ "42C40000 98",
+ "42C60000 99",
+ "42C80000 1.e2",
+ "42C80000 100",
+ "42C80000 10e1",
+ "42C80000 1e2",
+ "42CA0000 101",
+ "42CC0000 102",
+ "42CE0000 103",
+ "42D00000 104",
+ "42D20000 105",
+ "42D40000 106",
+ "42D60000 107",
+ "42D80000 108",
+ "42DA0000 109",
+ "42DC0000 110",
+ "42DE0000 111",
+ "42E00000 112",
+ "42E20000 113",
+ "42E40000 114",
+ "42E60000 115",
+ "42E80000 116",
+ "42EA0000 117",
+ "42EC0000 118",
+ "42EE0000 119",
+ "42F00000 120",
+ "42F20000 121",
+ "42F40000 122",
+ "42F60000 123",
+ "42F80000 124",
+ "42F8566C 124.16878890991211",
+ "42FA0000 125",
+ "42FC0000 126",
+ "42FE0000 127",
+ "43000000 128",
+ "43010000 129",
+ "43020000 130",
+ "43030000 131",
+ "43040000 132",
+ "43050000 133",
+ "43060000 134",
+ "43070000 135",
+ "43080000 136",
+ "43090000 137",
+ "430A0000 138",
+ "430B0000 139",
+ "430C0000 140",
+ "430D0000 141",
+ "430E0000 142",
+ "430F0000 143",
+ "43100000 144",
+ "43110000 145",
+ "43120000 146",
+ "43130000 147",
+ "43140000 148",
+ "43150000 149",
+ "43160000 150",
+ "43170000 151",
+ "43180000 152",
+ "43190000 153",
+ "431A0000 154",
+ "431B0000 155",
+ "431C0000 156",
+ "431D0000 157",
+ "431E0000 158",
+ "431F0000 159",
+ "43200000 160",
+ "43210000 161",
+ "43220000 162",
+ "43230000 163",
+ "43240000 164",
+ "43250000 165",
+ "43260000 166",
+ "43270000 167",
+ "43280000 168",
+ "43290000 169",
+ "432A0000 170",
+ "432B0000 171",
+ "432C0000 172",
+ "432D0000 173",
+ "432E0000 174",
+ "432F0000 175",
+ "43300000 176",
+ "43310000 177",
+ "43320000 178",
+ "43330000 179",
+ "43340000 180",
+ "43350000 181",
+ "43360000 182",
+ "43370000 183",
+ "43380000 184",
+ "43390000 185",
+ "433A0000 186",
+ "433B0000 187",
+ "433C0000 188",
+ "433D0000 189",
+ "433E0000 190",
+ "433F0000 191",
+ "43400000 192",
+ "43410000 193",
+ "43420000 194",
+ "43430000 195",
+ "43440000 196",
+ "43450000 197",
+ "43460000 198",
+ "43470000 199",
+ "43480000 200",
+ "43490000 201",
+ "434A0000 202",
+ "434B0000 203",
+ "434C0000 204",
+ "434D0000 205",
+ "434E0000 206",
+ "434E80CC 206.50310516357422",
+ "434F0000 207",
+ "43500000 208",
+ "43510000 209",
+ "43520000 210",
+ "43530000 211",
+ "43540000 212",
+ "43550000 213",
+ "43560000 214",
+ "43570000 215",
+ "43580000 216",
+ "43590000 217",
+ "435A0000 218",
+ "435B0000 219",
+ "435C0000 220",
+ "435D0000 221",
+ "435E0000 222",
+ "435F0000 223",
+ "43600000 224",
+ "43610000 225",
+ "43620000 226",
+ "43630000 227",
+ "43640000 228",
+ "43650000 229",
+ "43660000 230",
+ "43670000 231",
+ "43680000 232",
+ "43690000 233",
+ "436A0000 234",
+ "436B0000 235",
+ "436C0000 236",
+ "436D0000 237",
+ "436E0000 238",
+ "436F0000 239",
+ "43700000 240",
+ "43710000 241",
+ "43720000 242",
+ "43730000 243",
+ "43740000 244",
+ "43750000 245",
+ "43760000 246",
+ "43770000 247",
+ "43780000 248",
+ "43790000 249",
+ "437A0000 250",
+ "437B0000 251",
+ "437C0000 252",
+ "437D0000 253",
+ "437E0000 254",
+ "437F0000 255",
+ "43800000 256",
+ "43808000 257",
+ "43810000 258",
+ "43818000 259",
+ "43820000 260",
+ "43828000 261",
+ "43830000 262",
+ "43838000 263",
+ "43840000 264",
+ "43848000 265",
+ "43850000 266",
+ "43858000 267",
+ "43860000 268",
+ "43868000 269",
+ "43870000 270",
+ "43878000 271",
+ "43880000 272",
+ "43888000 273",
+ "43890000 274",
+ "43898000 275",
+ "438A0000 276",
+ "438A8000 277",
+ "438B0000 278",
+ "438B8000 279",
+ "438C0000 280",
+ "438C8000 281",
+ "438D0000 282",
+ "438D8000 283",
+ "438E0000 284",
+ "438E8000 285",
+ "438F0000 286",
+ "438F8000 287",
+ "43900000 288",
+ "43908000 289",
+ "43910000 290",
+ "43918000 291",
+ "43920000 292",
+ "43928000 293",
+ "43930000 294",
+ "43932A3D 294.33",
+ "43938000 295",
+ "43940000 296",
+ "43948000 297",
+ "43950000 298",
+ "43958000 299",
+ "43960000 300",
+ "43960000 3e2",
+ "43968000 301",
+ "43970000 302",
+ "43978000 303",
+ "43980000 304",
+ "43988000 305",
+ "43990000 306",
+ "43998000 307",
+ "439A0000 308",
+ "439A8000 309",
+ "439B0000 310",
+ "439B8000 311",
+ "439C0000 312",
+ "439C8000 313",
+ "439D0000 314",
+ "439D8000 315",
+ "439E0000 316",
+ "439E8000 317",
+ "439F0000 318",
+ "439F8000 319",
+ "43A00000 320",
+ "43A00000 32e1",
+ "43A08000 321",
+ "43A10000 322",
+ "43A18000 323",
+ "43A20000 324",
+ "43A28000 325",
+ "43A30000 326",
+ "43A38000 327",
+ "43A40000 328",
+ "43A48000 329",
+ "43A50000 330",
+ "43A58000 331",
+ "43A60000 332",
+ "43A68000 333",
+ "43A70000 334",
+ "43A78000 335",
+ "43A80000 336",
+ "43A88000 337",
+ "43A90000 338",
+ "43A98000 339",
+ "43AA0000 340",
+ "43AA8000 341",
+ "43AB0000 342",
+ "43AB8000 343",
+ "43AC0000 344",
+ "43AC8000 345",
+ "43AD0000 346",
+ "43AD8000 347",
+ "43AE0000 348",
+ "43AE8000 349",
+ "43AF0000 350",
+ "43AF8000 351",
+ "43B00000 352",
+ "43B08000 353",
+ "43B10000 354",
+ "43B18000 355",
+ "43B20000 356",
+ "43B28000 357",
+ "43B30000 358",
+ "43B38000 359",
+ "43B40000 360",
+ "43B48000 361",
+ "43B50000 362",
+ "43B58000 363",
+ "43B60000 364",
+ "43B68000 365",
+ "43B70000 366",
+ "43B78000 367",
+ "43B80000 368",
+ "43B88000 369",
+ "43B90000 370",
+ "43B98000 371",
+ "43BA0000 372",
+ "43BA8000 373",
+ "43BB0000 374",
+ "43BB8000 375",
+ "43BC0000 376",
+ "43BC8000 377",
+ "43BD0000 378",
+ "43BD8000 379",
+ "43BE0000 380",
+ "43BE8000 381",
+ "43BF0000 382",
+ "43BF8000 383",
+ "43C00000 384",
+ "43C08000 385",
+ "43C10000 386",
+ "43C18000 387",
+ "43C20000 388",
+ "43C28000 389",
+ "43C30000 390",
+ "43C38000 391",
+ "43C40000 392",
+ "43C48000 393",
+ "43C50000 394",
+ "43C58000 395",
+ "43C60000 396",
+ "43C68000 397",
+ "43C70000 398",
+ "43C78000 399",
+ "43C80000 400",
+ "43C88000 401",
+ "43C90000 402",
+ "43C98000 403",
+ "43CA0000 404",
+ "43CA8000 405",
+ "43CB0000 406",
+ "43CB8000 407",
+ "43CC0000 408",
+ "43CC8000 409",
+ "43CD0000 410",
+ "43CD8000 411",
+ "43CDF184 411.88682556152344",
+ "43CE0000 412",
+ "43CE8000 413",
+ "43CF0000 414",
+ "43CF8000 415",
+ "43D00000 416",
+ "43D08000 417",
+ "43D10000 418",
+ "43D18000 419",
+ "43D20000 420",
+ "43D28000 421",
+ "43D30000 422",
+ "43D38000 423",
+ "43D40000 424",
+ "43D48000 425",
+ "43D50000 426",
+ "43D58000 427",
+ "43D60000 428",
+ "43D68000 429",
+ "43D70000 430",
+ "43D78000 431",
+ "43D80000 432",
+ "43D88000 433",
+ "43D90000 434",
+ "43D98000 435",
+ "43DA0000 436",
+ "43DA8000 437",
+ "43DB0000 438",
+ "43DB8000 439",
+ "43DC0000 440",
+ "43DC8000 441",
+ "43DD0000 442",
+ "43DD8000 443",
+ "43DE0000 444",
+ "43DE8000 445",
+ "43DF0000 446",
+ "43DF8000 447",
+ "43E00000 448",
+ "43E08000 449",
+ "43E10000 450",
+ "43E18000 451",
+ "43E20000 452",
+ "43E28000 453",
+ "43E30000 454",
+ "43E38000 455",
+ "43E40000 456",
+ "43E48000 457",
+ "43E50000 458",
+ "43E58000 459",
+ "43E60000 460",
+ "43E68000 461",
+ "43E70000 462",
+ "43E78000 463",
+ "43E80000 464",
+ "43E88000 465",
+ "43E90000 466",
+ "43E98000 467",
+ "43EA0000 468",
+ "43EA8000 469",
+ "43EB0000 470",
+ "43EB8000 471",
+ "43EC0000 472",
+ "43EC8000 473",
+ "43ED0000 474",
+ "43ED8000 475",
+ "43EE0000 476",
+ "43EE8000 477",
+ "43EF0000 478",
+ "43EF8000 479",
+ "43F00000 480",
+ "43F08000 481",
+ "43F10000 482",
+ "43F18000 483",
+ "43F20000 484",
+ "43F28000 485",
+ "43F30000 486",
+ "43F38000 487",
+ "43F40000 488",
+ "43F48000 489",
+ "43F50000 490",
+ "43F58000 491",
+ "43F60000 492",
+ "43F68000 493",
+ "43F70000 494",
+ "43F78000 495",
+ "43F80000 496",
+ "43F88000 497",
+ "43F90000 498",
+ "43F98000 499",
+ "43FA0000 500",
+ "43FA8000 501",
+ "43FB0000 502",
+ "43FB8000 503",
+ "43FC0000 504",
+ "43FC8000 505",
+ "43FD0000 506",
+ "43FD8000 507",
+ "43FE0000 508",
+ "43FE8000 509",
+ "43FF0000 510",
+ "43FF8000 511",
+ "44000000 512",
+ "44004000 513",
+ "44008000 514",
+ "4400C000 515",
+ "44010000 516",
+ "44014000 517",
+ "44018000 518",
+ "4401C000 519",
+ "44020000 520",
+ "44024000 521",
+ "44026A3D 521.66",
+ "44028000 522",
+ "4402C000 523",
+ "44030000 524",
+ "44034000 525",
+ "44038000 526",
+ "4403C000 527",
+ "44040000 528",
+ "44044000 529",
+ "44048000 530",
+ "4404C000 531",
+ "44050000 532",
+ "44054000 533",
+ "44058000 534",
+ "4405C000 535",
+ "44060000 536",
+ "44064000 537",
+ "44068000 538",
+ "4406C000 539",
+ "44070000 540",
+ "44074000 541",
+ "44078000 542",
+ "4407C000 543",
+ "44080000 544",
+ "44084000 545",
+ "44088000 546",
+ "4408C000 547",
+ "44090000 548",
+ "44094000 549",
+ "44098000 550",
+ "4409C000 551",
+ "440A0000 552",
+ "440A4000 553",
+ "440A8000 554",
+ "440AC000 555",
+ "440B0000 556",
+ "440B4000 557",
+ "440B8000 558",
+ "440BC000 559",
+ "440C0000 560",
+ "440C4000 561",
+ "440C8000 562",
+ "440CC000 563",
+ "440D0000 564",
+ "440D4000 565",
+ "440D8000 566",
+ "440DC000 567",
+ "440E0000 568",
+ "440E4000 569",
+ "440E8000 570",
+ "440EC000 571",
+ "440F0000 572",
+ "440F4000 573",
+ "440F8000 574",
+ "440FC000 575",
+ "44100000 576",
+ "44104000 577",
+ "44108000 578",
+ "4410C000 579",
+ "44110000 580",
+ "44114000 581",
+ "44118000 582",
+ "4411C000 583",
+ "44120000 584",
+ "44124000 585",
+ "44128000 586",
+ "4412C000 587",
+ "44130000 588",
+ "44134000 589",
+ "44138000 590",
+ "4413C000 591",
+ "44140000 592",
+ "44144000 593",
+ "44148000 594",
+ "4414C000 595",
+ "44150000 596",
+ "44154000 597",
+ "44158000 598",
+ "4415C000 599",
+ "44160000 600",
+ "44160000 6e2",
+ "44164000 601",
+ "44168000 602",
+ "4416C000 603",
+ "44170000 604",
+ "44174000 605",
+ "44178000 606",
+ "4417C000 607",
+ "44180000 608",
+ "44184000 609",
+ "44188000 610",
+ "4418C000 611",
+ "44190000 612",
+ "44194000 613",
+ "44198000 614",
+ "4419C000 615",
+ "441A0000 616",
+ "441A4000 617",
+ "441A8000 618",
+ "441AC000 619",
+ "441B0000 620",
+ "441B4000 621",
+ "441B8000 622",
+ "441BC000 623",
+ "441C0000 624",
+ "441C4000 625",
+ "441C8000 626",
+ "441CC000 627",
+ "441D0000 628",
+ "441D4000 629",
+ "441D8000 630",
+ "441DC000 631",
+ "441E0000 632",
+ "441E4000 633",
+ "441E8000 634",
+ "441EC000 635",
+ "441F0000 636",
+ "441F4000 637",
+ "441F8000 638",
+ "441FC000 639",
+ "44200000 640",
+ "44204000 641",
+ "44208000 642",
+ "4420C000 643",
+ "44210000 644",
+ "44214000 645",
+ "44218000 646",
+ "4421C000 647",
+ "44220000 648",
+ "44224000 649",
+ "44228000 650",
+ "4422C000 651",
+ "44230000 652",
+ "44238000 654",
+ "4423C000 655",
+ "44240000 656",
+ "44244000 657",
+ "44248000 658",
+ "44250000 660",
+ "44254000 661",
+ "44258000 662",
+ "4425C000 663",
+ "44260000 664",
+ "44264000 665",
+ "44268000 666",
+ "4426C000 667",
+ "44270000 668",
+ "44278000 670",
+ "4427C000 671",
+ "44280000 672",
+ "44284000 673",
+ "44288000 674",
+ "4428C000 675",
+ "44294000 677",
+ "44298000 678",
+ "442A0000 680",
+ "442A4000 681",
+ "442B0000 684",
+ "442B4000 685",
+ "442BC000 687",
+ "442C0000 688",
+ "442C4000 689",
+ "442C8000 690",
+ "442CC000 691",
+ "442D0000 692",
+ "442D8000 694",
+ "442DC000 695",
+ "442E0000 696",
+ "442E4000 697",
+ "442E8000 698",
+ "442F0000 700",
+ "442F0000 7e2",
+ "442F4000 701",
+ "442F8000 702",
+ "44300000 704",
+ "44304000 705",
+ "44308000 706",
+ "4430C000 707",
+ "44310000 708",
+ "44314000 709",
+ "44318000 710",
+ "44318000 71e1",
+ "4431C000 711",
+ "44320000 712",
+ "44324000 713",
+ "44328000 714",
+ "4432C000 715",
+ "44330000 716",
+ "44334000 717",
+ "44338000 718",
+ "4433C000 719",
+ "44340000 720",
+ "44344000 721",
+ "44348000 722",
+ "4434C000 723",
+ "44350000 724",
+ "44354000 725",
+ "44358000 726",
+ "4435C000 727",
+ "44360000 728",
+ "44368000 730",
+ "4436C000 731",
+ "44370000 732",
+ "44374000 733",
+ "44378000 734",
+ "4437C000 735",
+ "44380000 736",
+ "44384000 737",
+ "44388000 738",
+ "44390000 740",
+ "44394000 741",
+ "44398000 742",
+ "443A0000 744",
+ "443A4000 745",
+ "443A8000 746",
+ "443AC000 747",
+ "443B0000 748",
+ "443B4000 749",
+ "443B8000 750",
+ "443B8000 75e01",
+ "443BC000 751",
+ "443C0000 752",
+ "443C8000 754",
+ "443CC000 755",
+ "443D0000 756",
+ "443D4000 757",
+ "443D8000 758",
+ "443E0000 760",
+ "443E4000 761",
+ "443EC000 763",
+ "443F0000 764",
+ "443F4000 765",
+ "443F8000 766",
+ "443FC000 767",
+ "44400000 768",
+ "44408000 770",
+ "4440C000 771",
+ "44410000 772",
+ "44414000 773",
+ "44418000 774",
+ "4441C000 775",
+ "44424000 777",
+ "44428000 778",
+ "44430000 780",
+ "44434000 781",
+ "44438000 782",
+ "4443C000 783",
+ "44440000 784",
+ "44444000 785",
+ "44448000 786",
+ "4444C000 787",
+ "44450000 788",
+ "44458000 790",
+ "4445C000 791",
+ "4445C000 791e0",
+ "44464000 793",
+ "44468000 794",
+ "4446C000 795",
+ "44470000 796",
+ "44474000 797",
+ "44478000 798",
+ "44480000 800",
+ "44480000 8e2",
+ "44484000 801",
+ "44488000 802",
+ "4448C000 803",
+ "44490000 804",
+ "44498000 806",
+ "4449C000 807",
+ "444A0000 808",
+ "444A8000 810",
+ "444AC000 811",
+ "444B0000 812",
+ "444B4000 813",
+ "444B8000 814",
+ "444C4000 817",
+ "444C8000 818",
+ "444D0000 820",
+ "444D4000 821",
+ "444DC000 823",
+ "444E0000 824",
+ "444E4000 825",
+ "444E8000 826",
+ "444EC000 827",
+ "444F0000 828",
+ "444F8000 830",
+ "444FC000 831",
+ "44500000 832",
+ "44504000 833",
+ "44508000 834",
+ "4450C000 835",
+ "44510000 836",
+ "44514000 837",
+ "44518000 838",
+ "44520000 840",
+ "44524000 841",
+ "44528000 842",
+ "4452C000 843",
+ "44530000 844",
+ "44538000 846",
+ "4453C000 847",
+ "44540000 848",
+ "44544000 849",
+ "44548000 850",
+ "4454C000 851",
+ "44554000 853",
+ "44558000 854",
+ "4455C000 855",
+ "44564000 857",
+ "44568000 858",
+ "4456C000 859",
+ "44570000 860",
+ "44574000 861",
+ "44578000 862",
+ "4457C000 863",
+ "44580000 864",
+ "44584000 865",
+ "44588000 866",
+ "4458C000 867",
+ "44590000 868",
+ "44594000 869",
+ "44598000 870",
+ "4459C000 871",
+ "445A0000 872",
+ "445A4000 873",
+ "445A8000 874",
+ "445B0000 876",
+ "445B4000 877",
+ "445B8000 878",
+ "445BC000 879",
+ "445C0000 880",
+ "445C4000 881",
+ "445C8000 882",
+ "445CC000 883",
+ "445D0000 884",
+ "445D8000 886",
+ "445DC000 887",
+ "445E0000 888",
+ "445E4000 889",
+ "445E8000 890",
+ "445EC000 891",
+ "445F0000 892",
+ "445F4000 893",
+ "445F8000 894",
+ "44600000 896",
+ "44604000 897",
+ "44608000 898",
+ "4460C000 899",
+ "44610000 900",
+ "44614000 901",
+ "4461C000 903",
+ "44620000 904",
+ "44624000 905",
+ "44628000 906",
+ "4462C000 907",
+ "44630000 908",
+ "44638000 910",
+ "4463C000 911",
+ "44640000 912",
+ "44644000 913",
+ "44648000 914",
+ "44650000 916",
+ "44654000 917",
+ "4465C000 919",
+ "44660000 920",
+ "44664000 921",
+ "44668000 922",
+ "4466C000 923",
+ "44670000 924",
+ "44678000 926",
+ "4467C000 927",
+ "44684000 929",
+ "44688000 930",
+ "44688000 93e1",
+ "4468C000 931",
+ "44694000 933",
+ "44698000 934",
+ "4469C000 935",
+ "4469C000 935e00",
+ "446A0000 936",
+ "446A17B2 936.3702087402344",
+ "446A4000 937",
+ "446B0000 940",
+ "446B4000 941",
+ "446B8000 942",
+ "446BC000 943",
+ "446C0000 944",
+ "446C4000 945",
+ "446C8000 946",
+ "446CC000 947",
+ "446D0000 948",
+ "446D4000 949",
+ "446D8000 950",
+ "446DC000 951",
+ "446E0000 952",
+ "446E4000 953",
+ "446E8000 954",
+ "446EC000 955",
+ "446F0000 956",
+ "446F4000 957",
+ "44700000 960",
+ "44704000 961",
+ "4470C000 963",
+ "44710000 964",
+ "44718000 966",
+ "4471C000 967",
+ "44724000 969",
+ "44728000 970",
+ "4472C000 971",
+ "44730000 972",
+ "44734000 973",
+ "44738000 974",
+ "4473C000 975",
+ "4473C000 975e0",
+ "44740000 976",
+ "44744000 977",
+ "4474C000 979",
+ "44750000 980",
+ "44754000 981",
+ "4475C000 983",
+ "44760000 984",
+ "44768000 986",
+ "4476C000 987",
+ "44774000 989",
+ "44778000 990",
+ "44784000 993",
+ "44788000 994",
+ "4478C000 995",
+ "44790000 996",
+ "44794000 997",
+ "44798000 998",
+ "4479C000 999",
+ "447A0000 1000",
+ "447A0000 1e3",
+ "447AC000 1003",
+ "447B0000 1004",
+ "447B8000 1006",
+ "447BC000 1007",
+ "447C4000 1009",
+ "447C8000 1010",
+ "447D4000 1013",
+ "447D8000 1014",
+ "447E0000 1016",
+ "447E4000 1017",
+ "447EC000 1019",
+ "447F0000 1020",
+ "447F8000 1022",
+ "447FC000 1023",
+ "44800000 1024",
+ "44804000 1026",
+ "44806000 1027",
+ "4480A000 1029",
+ "4480C000 1030",
+ "44812000 1033",
+ "44814000 1034",
+ "44818000 1036",
+ "4481A000 1037",
+ "4481E000 1039",
+ "44820000 1040",
+ "44826000 1043",
+ "44828000 1044",
+ "4482C000 1046",
+ "4482E000 1047",
+ "44832000 1049",
+ "44834000 1050",
+ "4483A000 1053",
+ "4483C000 1054",
+ "44840000 1056",
+ "44842000 1057",
+ "44846000 1059",
+ "44848000 1060",
+ "4484BB85 1061.86",
+ "4484E000 1063",
+ "44850000 1064",
+ "44854000 1066",
+ "44856000 1067",
+ "4485A000 1069",
+ "4485C000 1070",
+ "44860000 1072",
+ "44862000 1073",
+ "44864000 1074",
+ "44866000 1075",
+ "44868000 1076",
+ "4486A000 1077",
+ "4486E000 1079",
+ "44874000 1082",
+ "4487C000 1086",
+ "44882000 1089",
+ "44886000 1091",
+ "44888000 1092",
+ "44890000 1096",
+ "44896000 1099",
+ "4489C000 1102",
+ "448A4000 1106",
+ "448AA000 1109",
+ "448AC000 1110",
+ "448AE000 1111",
+ "448B0000 1112",
+ "448B8000 1116",
+ "448BE000 1119",
+ "448C4000 1122",
+ "448CC000 1126",
+ "448D2000 1129",
+ "448D8000 1132",
+ "448E0000 1136",
+ "44914000 1162",
+ "44916000 1163",
+ "44926000 1171",
+ "4496E000 1207",
+ "44986000 1219",
+ "4499C000 1230",
+ "449FE000 1279",
+ "44A02000 1281",
+ "44AB5DA6 1370.9265747070312",
+ "44ADA000 1389",
+ "44B12000 1417",
+ "44B84000 1474",
+ "44B8C000 1478",
+ "44BCE000 1511",
+ "44BFE000 1535",
+ "44C2C000 1558",
+ "44C36000 1563",
+ "44C3C000 1566",
+ "44C64000 1586",
+ "44C8E000 1607",
+ "44CD2000 1641",
+ "44CFA000 1661",
+ "44CFC000 1662",
+ "44D08000 1668",
+ "44D16000 1675",
+ "44D6A000 1717",
+ "44D90000 1736",
+ "44DCA000 1765",
+ "44DE6000 1779",
+ "44E02000 1793",
+ "44E28000 1812",
+ "44E32000 1817",
+ "44E5E000 1839",
+ "44E6A000 1845",
+ "44E84000 1858",
+ "44E9E000 1871",
+ "44EAA000 1877",
+ "44EF8000 1916",
+ "44F12000 1929",
+ "44F26000 1939",
+ "44F28000 1940",
+ "44F3E000 1951",
+ "44F42000 1953",
+ "44F4C000 1958",
+ "44F8E000 1991",
+ "44F98000 1996",
+ "44F9A000 1997",
+ "44F9C000 1998",
+ "44F9E000 1999",
+ "44FA0000 2000",
+ "44FA2000 2001",
+ "44FA8000 2004",
+ "44FC4148 2018.04",
+ "44FC6000 2019",
+ "44FC8000 2020",
+ "44FC8148 2020.04",
+ "44FD0000 2024",
+ "44FE2000 2033",
+ "44FEA000 2037",
+ "44FFE000 2047",
+ "45015000 2069",
+ "4501E000 2078",
+ "45027000 2087",
+ "45032000 2098",
+ "45069000 2153",
+ "45072000 2162",
+ "45077000 2167",
+ "4508D000 2189",
+ "450AE000 2222",
+ "450C5000 2245",
+ "450D6000 2262",
+ "450E5000 2277",
+ "450E8000 2280",
+ "45100000 2304",
+ "45113000 2323",
+ "4512E000 2350",
+ "4513C000 2364",
+ "45158000 2392",
+ "4515E000 2398",
+ "45171000 2417",
+ "45179000 2425",
+ "4518E000 2446",
+ "451A9000 2473",
+ "451AA000 2474",
+ "451C4000 25e2",
+ "451C7000 2503",
+ "451DD48C 2525.2840576171875",
+ "451E1000 2529",
+ "451FB000 2555",
+ "45201000 2561",
+ "45206000 2566",
+ "4520C000 2572",
+ "4523D000 2621",
+ "45242000 2626",
+ "4525F000 2655",
+ "4528C000 27e2",
+ "452A6000 2726",
+ "452AE000 2734",
+ "452B5000 2741",
+ "452DD000 2781",
+ "452EA000 2794",
+ "452F0000 2800",
+ "452F2000 2802",
+ "452FA000 281e1",
+ "45304000 2820",
+ "45310000 2832",
+ "4531D000 2845",
+ "4531E000 2846",
+ "45322000 2850",
+ "4532E000 2862",
+ "45331000 2865",
+ "4533B000 2875",
+ "45340000 288e1",
+ "4534F000 2895",
+ "4535A000 2906",
+ "45378000 2936",
+ "4537B000 2939",
+ "45392000 2962",
+ "45397000 2967",
+ "4539E000 2974",
+ "453A1000 2977",
+ "453C6000 3014",
+ "453D8000 3032",
+ "453E6000 3046",
+ "453EF000 3055",
+ "453FA000 3066",
+ "453FB000 3067",
+ "45400000 3072",
+ "45401000 3073",
+ "45408000 3080",
+ "4541E000 3102",
+ "45427000 3111",
+ "45428000 3112",
+ "45435000 3125",
+ "45447000 3143",
+ "45487000 3207",
+ "454A4000 3236",
+ "454DD000 3293",
+ "45505000 3333",
+ "45512000 3346",
+ "45520000 3360",
+ "45548000 3400",
+ "4555F000 3423",
+ "45562000 3426",
+ "45582000 3458",
+ "45588000 3464",
+ "4559B000 3483",
+ "455BB000 3515",
+ "455CC000 3532",
+ "455CF000 3535",
+ "45613000 3603",
+ "45618000 3608",
+ "45675000 3701",
+ "4568F000 3727",
+ "456D0000 3792",
+ "45701000 3841",
+ "45723000 3875",
+ "45744000 3908",
+ "45759000 3929",
+ "4578A000 3978",
+ "45795000 3989",
+ "4579F000 3999",
+ "457A0000 4000",
+ "457A0000 4e3",
+ "457AE000 4014",
+ "457BD000 4029",
+ "457E1000 4065",
+ "457E2000 4066",
+ "457F0000 4080",
+ "457FF000 4095",
+ "45800000 4096",
+ "4580E000 4124",
+ "45814000 4136",
+ "4582B800 4183",
+ "4582C000 4184",
+ "4582E800 4189",
+ "4582F800 4191",
+ "45834000 4200",
+ "45838800 4209",
+ "45841000 4226",
+ "4584B800 4247",
+ "45864000 4296",
+ "45875000 4330",
+ "4587E800 4349",
+ "45890000 4384",
+ "45898000 4400",
+ "458A5800 4427",
+ "458AC000 4440",
+ "458AE000 4444",
+ "458B3800 4455",
+ "458D7000 4526",
+ "458ED800 4571",
+ "458FA800 4597",
+ "458FB000 4598",
+ "45902800 4613",
+ "45904800 4617",
+ "4590C000 4632",
+ "45915800 4651",
+ "4591A800 4661",
+ "4591C800 4665",
+ "45921000 4674",
+ "45925000 4682",
+ "4592E000 4700",
+ "45934800 4713",
+ "45939800 4723",
+ "4593A000 4724",
+ "45948800 4753",
+ "45954800 4777",
+ "45965800 4811",
+ "4596A000 4820",
+ "45973000 4838",
+ "45993000 4902",
+ "45999800 4915",
+ "4599E800 4925",
+ "4599F000 4926",
+ "459A0800 4929",
+ "459B6000 4972",
+ "459B8000 4976",
+ "459BF800 4991",
+ "459CB000 5014",
+ "459CE800 5021",
+ "459E9000 5074",
+ "459F0000 5088",
+ "459FC000 5112",
+ "459FD000 5114",
+ "45A10800 5153",
+ "45A18800 5169",
+ "45A1D000 5178",
+ "45A1E000 5180",
+ "45A29000 5202",
+ "45A38000 5232",
+ "45A3A000 5236",
+ "45A58000 5296",
+ "45A5A800 5301",
+ "45A5E000 5308",
+ "45A66000 5324",
+ "45A6B000 5334",
+ "45A77800 5359",
+ "45A83000 5382",
+ "45A8C000 54e2",
+ "45A93800 5415",
+ "45A97800 5423",
+ "45AA0800 5441",
+ "45AC4800 5513",
+ "45ACF800 5535",
+ "45AD9800 5555",
+ "45ADC000 5560",
+ "45AE7800 5583",
+ "45AE9000 5586",
+ "45AF0000 5600",
+ "45AF0800 5601",
+ "45AF2800 5605",
+ "45B02000 5636",
+ "45B06800 5645",
+ "45B1D800 5691",
+ "45B21000 5698",
+ "45B42000 5764",
+ "45B5B000 5814",
+ "45B5F800 5823",
+ "45B6F000 5854",
+ "45B7C000 5880",
+ "45B85800 5899",
+ "45B8E000 5916",
+ "45BA4000 5960",
+ "45BAD800 5979",
+ "45BB7000 5998",
+ "45BBC800 6009",
+ "45BC1800 6019",
+ "45BC9000 6034",
+ "45BCD000 6042",
+ "45BD2800 6053",
+ "45BE2000 6084",
+ "45BF5000 6122",
+ "45C03000 6150",
+ "45C11000 6178",
+ "45C17800 6191",
+ "45C20800 6209",
+ "45C25000 6218",
+ "45C2F800 6239",
+ "45C3B000 6262",
+ "45C41000 6274",
+ "45C51000 6306",
+ "45C53800 6311",
+ "45C574A4 6318.580322265625",
+ "45C5C800 6329",
+ "45C5E000 6332",
+ "45C6C000 6360",
+ "45C7E800 6397",
+ "45C7F000 6398",
+ "45C7F800 6399",
+ "45C82800 6405",
+ "45C84800 6409",
+ "45C89800 6419",
+ "45C8A000 642e1",
+ "45C9B800 6455",
+ "45C9F000 6462",
+ "45CA8800 6481",
+ "45CAF000 6494",
+ "45CB2000 6500",
+ "45CBC800 6521",
+ "45CC1000 653e1",
+ "45CC5000 6538",
+ "45CD2800 6565",
+ "45CEC800 6617",
+ "45D01000 6658",
+ "45D05000 6666",
+ "45D10000 6688",
+ "45D20000 6720",
+ "45D2B000 6742",
+ "45D40000 6784",
+ "45D45000 6794",
+ "45D48000 6800",
+ "45D58000 6832",
+ "45D6C000 6872",
+ "45D85800 6923",
+ "45D97000 6958",
+ "45DAA800 6997",
+ "45DAC000 7e3",
+ "45DAF800 7007",
+ "45DB8800 7025",
+ "45DC6000 7052",
+ "45DC6800 7053",
+ "45DD8000 7088",
+ "45DE2800 7109",
+ "45DE4000 7112",
+ "45DF2800 7141",
+ "45E04800 7177",
+ "45E09800 7187",
+ "45E18000 7216",
+ "45E39000 7282",
+ "45E3B000 7286",
+ "45E57800 7343",
+ "45E5C000 7352",
+ "45E68800 7377",
+ "45E70000 7392",
+ "45E74000 7400",
+ "45E74800 7401",
+ "45E7B800 7415",
+ "45E7C000 7416",
+ "45E7F000 7422",
+ "45E80800 7425",
+ "45E89800 7443",
+ "45E8A000 7444",
+ "45E9B000 7478",
+ "45EA6800 7501",
+ "45EA7800 7503",
+ "45EB7800 7535",
+ "45EBE000 7548",
+ "45EC8800 7569",
+ "45ECB800 7575",
+ "45EDA000 7604",
+ "45EE2800 7621",
+ "45EE5000 7626",
+ "45EEC800 7641",
+ "45EEF800 7647",
+ "45EF0000 7648",
+ "45F0E800 7709",
+ "45F0F800 7711",
+ "45F20000 7744",
+ "45F22800 7749",
+ "45F2C000 7768",
+ "45F30800 7777",
+ "45F35800 7787",
+ "45F39800 7795",
+ "45F41000 7810",
+ "45F45000 7818",
+ "45F5C000 7864",
+ "45F64000 7880",
+ "45F8B000 7958",
+ "45F8B800 7959",
+ "45F96000 7980",
+ "45FA0000 8000",
+ "45FA0800 8001",
+ "45FB3000 8038",
+ "45FBC800 8057",
+ "45FC6800 8077",
+ "45FCB800 8087",
+ "45FD4800 8105",
+ "45FD7800 8111",
+ "45FE0000 8128",
+ "45FEF000 8158",
+ "45FF0800 8161",
+ "46004800 8210",
+ "46005400 8213",
+ "4600F000 8252",
+ "4601B000 8300",
+ "46021800 8326",
+ "46025400 8341",
+ "46026800 8346",
+ "46027400 8349",
+ "4602C800 8370",
+ "4602E400 8377",
+ "4602F000 8380",
+ "46032400 8393",
+ "46032800 8394",
+ "46033000 8396",
+ "46035800 8406",
+ "46037000 8412",
+ "4603B800 8430",
+ "46043400 8461",
+ "4604B400 8493",
+ "4604B800 8494",
+ "46050400 8513",
+ "4605A000 8552",
+ "46060400 8577",
+ "46065C00 8599",
+ "46066C00 8603",
+ "46069000 8612",
+ "46069400 8613",
+ "4606A400 8617",
+ "4606F400 8637",
+ "46071000 8644",
+ "4607D000 8692",
+ "4607E000 8696",
+ "46082800 8714",
+ "4608E800 8762",
+ "46092C00 8779",
+ "4609F400 8829",
+ "460AE000 8888",
+ "460AFC00 8895",
+ "460B6000 8920",
+ "460B6400 8921",
+ "460C1400 8965",
+ "460C2C00 8971",
+ "460CA000 9000",
+ "460CA000 9e3",
+ "460CEC00 9019",
+ "460CFC00 9023",
+ "460D4C00 9043",
+ "460E2000 9096",
+ "460F9000 9188",
+ "46107800 9246",
+ "4610C400 9265",
+ "4610DC00 9271",
+ "4610E400 9273",
+ "46113000 9292",
+ "46119000 9316",
+ "4612C000 9392",
+ "4612D400 9397",
+ "46135800 9430",
+ "46137000 9436",
+ "46140000 9472",
+ "46141400 9477",
+ "46142000 9480",
+ "46143400 9485",
+ "46143800 9486",
+ "46144C00 9491",
+ "46145C00 9495",
+ "46147800 9502",
+ "46148800 9506",
+ "46155800 9558",
+ "46165C00 9623",
+ "46166000 9624",
+ "46171800 9670",
+ "46172000 9672",
+ "46181000 9732",
+ "46184400 9745",
+ "4618F400 9789",
+ "461A9000 9892",
+ "461AE800 9914",
+ "461B5800 9942",
+ "461BC000 9968",
+ "461BEC00 9979",
+ "461C1C00 9991",
+ "461C3C00 9999",
+ "461C4000 10000",
+ "461C4000 1e4",
+ "461E6400 10137",
+ "4620B000 10284",
+ "46258800 10594",
+ "462D9C00 11111",
+ "46333C00 11471",
+ "4634FC00 11583",
+ "463F2000 12232",
+ "46426800 12442",
+ "4647EC00 12795",
+ "464BF000 13052",
+ "46506000 13336",
+ "46592000 13896",
+ "465CB400 14125",
+ "46634400 14545",
+ "4663F000 14588",
+ "466E9C00 15271",
+ "46722974 15498.36376953125",
+ "46742400 15625",
+ "4677D800 15862",
+ "467D3800 16206",
+ "467FF800 16382",
+ "46802FE4 16407.9462890625",
+ "46816200 16561",
+ "4681C200 16609",
+ "4684D000 17e3",
+ "4688174C 17419.6494140625",
+ "468AA400 17746",
+ "46912800 18580",
+ "4693A600 18899",
+ "4694F800 19068",
+ "4695B200 19161",
+ "46984600 19491",
+ "469C3E00 19999",
+ "469CAC00 20054",
+ "469CE400 20082",
+ "469E2E00 20247",
+ "469E6E00 20279",
+ "46A23A00 20765",
+ "46A5AE00 21207",
+ "46A9BE00 21727",
+ "46AB9800 21964",
+ "46AD9C00 22222",
+ "46BA7600 23867",
+ "46BD2200 24209",
+ "46BF0800 24452",
+ "46C40000 25088",
+ "46C80000 256e2",
+ "46C9BE00 25823",
+ "46CA1400 25866",
+ "46CAD200 25961",
+ "46CC8E00 26183",
+ "46CEA600 26451",
+ "46D15A00 26797",
+ "46D1A800 26836",
+ "46D4EE00 27255",
+ "46D54600 27299",
+ "46DAAA00 27989",
+ "46DB4A00 28069",
+ "46DD1800 28300",
+ "46E53600 29339",
+ "46EBA600 30163",
+ "46EBDC00 30190",
+ "46EC162A 30219.0830078125",
+ "46F28A00 31045",
+ "46F68E00 31559",
+ "46F6C600 31587",
+ "46F78000 31680",
+ "47010C00 33036",
+ "4701C500 33221",
+ "47023500 33333",
+ "4703B900 33721",
+ "4703D100 33745",
+ "47074300 34627",
+ "4707FA00 34810",
+ "47091700 35095",
+ "470A6B00 35435",
+ "470D1100 36113",
+ "470D8000 36224",
+ "470E0E00 36366",
+ "470E7F00 36479",
+ "470FE500 36837",
+ "47109600 37014",
+ "4710E000 37088",
+ "4713A900 37801",
+ "4713A900 37801e0",
+ "47160D00 38413",
+ "471ABD00 39613",
+ "471AF900 39673",
+ "471C4000 40000",
+ "471C4000 4e4",
+ "471C8200 40066",
+ "471E4300 40515",
+ "471F8000 40832",
+ "47218200 41346",
+ "4722D600 41686",
+ "47233300 41779",
+ "47241000 42e3",
+ "47269500 42645",
+ "4726D700 42711",
+ "47278900 42889",
+ "47278E00 42894",
+ "47291700 43287",
+ "47291E00 43294",
+ "472B330C 43827.048828125",
+ "472CEF00 44271",
+ "472D9C00 44444",
+ "472ED100 44753",
+ "4732F500 45813",
+ "4735B600 46518",
+ "47370B00 46859",
+ "47382A00 47146",
+ "47395500 47445",
+ "47397F00 47487",
+ "4739CC00 47564",
+ "4739DB00 47579",
+ "473F9500 49045",
+ "47426500 49765",
+ "47435000 5e4",
+ "47448100 50305",
+ "4746B000 50864",
+ "47484300 51267",
+ "4748B900 51385",
+ "47491500 51477",
+ "47495300 51539",
+ "474A6F00 51823",
+ "474A8C00 51852",
+ "474B6000 52064",
+ "474BE000 52192",
+ "474BF200 52210",
+ "474C8B00 52363",
+ "474D0100 52481",
+ "47538600 54150",
+ "47547A00 54394",
+ "47559600 54678",
+ "4755F000 54768",
+ "47571B00 55067",
+ "47583300 55347",
+ "47584800 55368",
+ "4758A800 55464",
+ "47590300 55555",
+ "47595500 55637",
+ "47596500 55653",
+ "475AC800 56008",
+ "475B2900 56105",
+ "475B9C00 56220",
+ "475D8800 56712",
+ "475DD600 56790",
+ "475F9C00 57244",
+ "475FF000 57328",
+ "47606C00 57452",
+ "47615F00 57695",
+ "4762EB00 58091",
+ "47634200 58178",
+ "47634400 58180",
+ "47635800 582e2",
+ "47652400 58660",
+ "476A2800 59944",
+ "476A6000 6e4",
+ "476C4F00 60495",
+ "476D1400 60692",
+ "476E4800 61E3",
+ "476F6100 61281",
+ "476F8100 61313",
+ "47735400 62292",
+ "47749800 62616",
+ "47757400 62836",
+ "4775AE00 62894",
+ "4777C100 63425",
+ "4777D000 63440",
+ "47780D00 63501",
+ "47796D00 63853",
+ "477AB100 64177",
+ "477AE600 6423e1",
+ "477B1B00 64283",
+ "477B4F00 64335",
+ "477CC800 64712",
+ "477D4800 64840",
+ "477F6C00 65388",
+ "47800000 65536",
+ "47809280 65829",
+ "47810E00 66076",
+ "47820A00 66580",
+ "47822500 66634",
+ "47823500 66666",
+ "4782DF00 67006",
+ "4785F400 68584",
+ "47860E80 68637",
+ "4787DC80 69561",
+ "4787ED00 69594",
+ "4788BE80 70013",
+ "47894C80 70297",
+ "4789D280 70565",
+ "478A6500 70858",
+ "478A7000 7088e1",
+ "478B8400 71432",
+ "478C2700 71758",
+ "478D1F80 72255",
+ "478D3800 72304",
+ "478D9880 72497",
+ "478DA200 72516",
+ "478FC480 73609",
+ "478FF400 73704",
+ "47903400 73832",
+ "4790F980 74227",
+ "47928F00 75038",
+ "47938980 75539",
+ "4793F780 75759",
+ "47941080 75809",
+ "47949300 76070",
+ "4794E900 76242",
+ "47959680 76589",
+ "4796B600 77164",
+ "47975680 77485",
+ "4797CB80 77719",
+ "4797E880 77777",
+ "47980600 77836",
+ "47989680 78125",
+ "4798B500 78186",
+ "479A0080 78849",
+ "479A6F80 79071",
+ "479AF900 79346",
+ "479BA380 79687",
+ "479BB400 79720",
+ "479C4000 80000",
+ "479C4000 8e4",
+ "479C5580 80043",
+ "479D0400 80392",
+ "479D1E00 80444",
+ "479D8E00 80668",
+ "479F1F80 81471",
+ "479FD900 81842",
+ "47A1C100 82818",
+ "47A20A00 82964",
+ "47A25B00 83126",
+ "47A29A80 83253",
+ "47A2E200 83396",
+ "47A33000 83552",
+ "47A33080 83553",
+ "47A33E80 83581",
+ "47A34080 83585",
+ "47A53000 84576",
+ "47A56780 84687",
+ "47A5FD80 84987",
+ "47A605A0 85003.24609375",
+ "47A64680 85133",
+ "47A7C900 85906",
+ "47A7CE00 85916",
+ "47A85680 86189",
+ "47A8B400 86376",
+ "47A9C680 86925",
+ "47AA4E00 87196",
+ "47AA7580 87275",
+ "47AAB000 87392",
+ "47AB2480 87625",
+ "47AD5580 88747",
+ "47AD7680 88813",
+ "47AD9C00 88888",
+ "47ADBF00 88958",
+ "47ADE600 89036",
+ "47AEED00 89562",
+ "47AF3480 89705",
+ "47AF7680 89837",
+ "47AFC800 9e4",
+ "47AFF000 90080",
+ "47B0E180 90563",
+ "47B12D80 90715",
+ "47B15D80 90811",
+ "47B18000 90880",
+ "47B18900 90898",
+ "47B27800 91376",
+ "47B28D80 91419",
+ "47B2B780 91503",
+ "47B3E780 92111",
+ "47B4A380 92487",
+ "47B52500 92746",
+ "47B68280 93445",
+ "47B78200 93956",
+ "47B8ED00 94682",
+ "47B96900 94930",
+ "47BA2200 953e2",
+ "47BA2A80 95317",
+ "47BA4200 95364",
+ "47BA9380 95527",
+ "47BB5C00 95928",
+ "47BC0580 96267",
+ "47BC0800 96272",
+ "47BDAB80 97111",
+ "47BDE500 97226",
+ "47BE0200 97284",
+ "47BEDD80 97723",
+ "47BEDE00 97724",
+ "47BEEF00 97758",
+ "47BF6800 98e3",
+ "47BF8A00 98068",
+ "47BFBA80 98165",
+ "47BFBE00 98172",
+ "47C0DD00 98746",
+ "47C16580 99019",
+ "47C19180 99107",
+ "47C26A80 99541",
+ "47C2EA80 99797",
+ "47C34D80 99995",
+ "47C34F80 99999",
+ "47C35000 100000",
+ "47C35000 1e5",
+ "47C65E00 101564",
+ "47C8DE00 102844",
+ "47D2E280 107973",
+ "47D90380 111111",
+ "47DEA800 114000",
+ "47FA0300 128006",
+ "47FFA500 130890",
+ "4807C540 139029",
+ "480F2B80 146606",
+ "48102400 1476e2",
+ "4810F600 148440",
+ "48149A80 152170",
+ "48191B84 156782.0703125",
+ "4819D280 157514",
+ "481AE000 158592",
+ "481B0100 158724",
+ "4825DC00 169840",
+ "482C7B00 176620",
+ "482C9C00 176752",
+ "482DC6C0 177947",
+ "482E3800 178400",
+ "483B2080 191618",
+ "483EC680 195354",
+ "483F90C0 196163",
+ "48435000 200000",
+ "48435000 20e04",
+ "48435000 2e5",
+ "48451A40 201833",
+ "48464BC0 203055",
+ "484CDEC0 209787",
+ "4852D6C0 215899",
+ "48567FC0 219647",
+ "48568100 219652",
+ "48590380 222222",
+ "485919C0 222311",
+ "485CED40 226229",
+ "485D93C0 226895",
+ "485E62C0 227723",
+ "486003C0 229391",
+ "486805C0 237591",
+ "486CD0C0 242499",
+ "486ED800 244576",
+ "48701040 245825",
+ "4870F0C0 246723",
+ "487319C0 248935",
+ "48796E00 255416",
+ "487A5C40 256369",
+ "487C9A40 258665",
+ "487CCD40 258869",
+ "488131A0 264589",
+ "48850A60 272467",
+ "48885FC0 279294",
+ "4888B800 280000",
+ "488D6300 289560",
+ "488DB840 290242",
+ "488E8260 291859",
+ "4891A980 298316",
+ "48927B60 299995",
+ "48933120 301449",
+ "4895D6A0 306869",
+ "4896C580 308780",
+ "48997AA0 314325",
+ "489A6DE0 316271",
+ "489E61A0 324365",
+ "489F7480 326564",
+ "48A057B0 328381.484375",
+ "48A0AE80 329076",
+ "48A269A0 332621",
+ "48A2C2A0 333333",
+ "48A60400 340000",
+ "48A8C580 345644",
+ "48BEBC20 390625",
+ "48C036C0 393654",
+ "48C1D5A0 396973",
+ "48C2E060 399107",
+ "48C35000 400000",
+ "48C35000 4e5",
+ "48C3A380 400668",
+ "48C40980 401484",
+ "48C71160 407691",
+ "48C83200 410000",
+ "48D00460 426019",
+ "48D228C0 430406",
+ "48D38360 433179",
+ "48D48960 435275",
+ "48D635E0 438703",
+ "48D90380 444444",
+ "48D948E0 444999",
+ "48D96B60 445275",
+ "48DBD640 450226",
+ "48DDAD40 453994",
+ "48E0D200 460432",
+ "48E4A8A0 468293",
+ "48E82E40 475506",
+ "48E851E0 475791",
+ "48E983C0 478238",
+ "48E99AE0 478423",
+ "48EAEE40 481138",
+ "48EBC260 482835",
+ "48EC4000 483840",
+ "48ED3860 485827",
+ "48F022C0 491798",
+ "48F42400 50e4",
+ "48F42400 5e5",
+ "48F98480 511012",
+ "48FA53C0 512670",
+ "49037740 538484",
+ "490433D0 541501",
+ "49056290 546345",
+ "49063B70 549815",
+ "4907A230 555555",
+ "490BF660 573286",
+ "490C0000 573440",
+ "490CDE90 577001",
+ "490E2C20 582338",
+ "490E9E60 584166",
+ "490EDB30 585139",
+ "490F8490 587849",
+ "490FDAE0 589230",
+ "49103830 590723",
+ "49115190 595225",
+ "49117750 595829",
+ "49131000 602368",
+ "49146000 607744",
+ "49159960 612758",
+ "491653C0 615740",
+ "4916A280 617e3",
+ "49175E00 620000",
+ "49181480 622920",
+ "491A9CD0 633293",
+ "491AB520 633682",
+ "491AEC40 634564",
+ "491B21E0 635422",
+ "491F74B0 653131",
+ "49209B20 657842",
+ "4920D8C0 658828",
+ "4920DCC0 658892",
+ "49215420 660802",
+ "492191F0 661791",
+ "4922AE70 666343",
+ "4922C2A0 666666",
+ "492349D0 668829",
+ "4925BD00 678864",
+ "492606B0 680043",
+ "4927A1B0 686619",
+ "4927F750 687989",
+ "49298D70 694487",
+ "492A0290 696361",
+ "492A1C60 696774",
+ "492A2830 696963",
+ "492A4300 697392",
+ "492AE600 700000",
+ "492AE600 7e5",
+ "492C5C80 705992",
+ "492DB5B0 711515",
+ "49302EA0 721642",
+ "4932C820 732290",
+ "493380C0 735244",
+ "4935A440 744004",
+ "4936FAD0 749485",
+ "49389CE0 756174",
+ "493A2360 762422",
+ "493AA4A0 764490",
+ "493B55F0 767327",
+ "493B8740 768116",
+ "493B8E20 768226",
+ "493C8F30 772339",
+ "493D3580 775e3",
+ "493DE310 777777",
+ "493E6E00 78e4",
+ "493EFB64 782262.28125",
+ "493F7D10 784337",
+ "493FEE70 786151",
+ "494185B0 792667",
+ "4941BD30 793555",
+ "49423260 795430",
+ "49424B60 795830",
+ "49435000 800000",
+ "49435000 8e5",
+ "4944DD50 806357",
+ "49452670 807527",
+ "4947F330 818995",
+ "49483180 819992",
+ "494A5030 828675",
+ "494AB4B0 830283",
+ "494AC540 830548",
+ "494CAD10 838353",
+ "494DF5A0 843610",
+ "494EDCB0 847307",
+ "494F0490 847945",
+ "495110E0 856334",
+ "4951AA60 858790",
+ "49531EE0 864750",
+ "49535E40 865764",
+ "4953BA90 867241",
+ "49552280 873e03",
+ "49555360 873782",
+ "4956A490 879177",
+ "4957DA60 884134",
+ "4958C540 887892",
+ "4958D480 888136",
+ "49590380 888888",
+ "49595FA0 890362",
+ "49596790 890489",
+ "4959F3B0 892731",
+ "495A9010 895233",
+ "495B05C0 897116",
+ "495B2FD0 897789",
+ "495B9B00 899504",
+ "495BBA00 9e5",
+ "495DD720 908658",
+ "495DE0A0 908810",
+ "495E7330 911155",
+ "495F2100 913936",
+ "495FE390 917049",
+ "4961CFB0 924923",
+ "4962A260 928294",
+ "49641970 934295",
+ "496491B0 936219",
+ "49649330 936243",
+ "49662770 942711",
+ "496719E0 946590",
+ "49672880 946824",
+ "496753E0 947518",
+ "4967A220 948770",
+ "496981F0 956447",
+ "496A1A50 958885",
+ "496B43E0 963646e0",
+ "496C5E30 968163",
+ "496D16F0 971119",
+ "496F1920 979346",
+ "496FB1B0 981787",
+ "49708740 985204",
+ "4970B3B0 985915",
+ "4971AEF0 989935",
+ "49733480 996168",
+ "4973EB20 999090",
+ "497423F0 999999",
+ "49742400 1000000",
+ "49742400 1e6",
+ "497484E0 1001550",
+ "49784FE0 1017086",
+ "49800000 1048576",
+ "49824680 1067216",
+ "49834C80 1075600",
+ "49849078 1085967",
+ "4987A238 1111111",
+ "498A6AB8 1133911",
+ "498AA678 1135823",
+ "49909E68 1184717",
+ "49918F98 1192435",
+ "49920760 1196268",
+ "4996AD40 1234344",
+ "49999C58 1258379",
+ "499B6E60 1273292",
+ "49AA9EF0 1397726",
+ "49ACE2E0 1416284",
+ "49AFEB48 1441129",
+ "49B01F70 1442798",
+ "49B87262 1510988.3125",
+ "49B95070 1518094",
+ "49BEC880 1562896",
+ "49C04738 1575143",
+ "49C06B60 15763e2",
+ "49C9B478 1652367",
+ "49D05330 1706598",
+ "49D17398 1715827",
+ "49E21D50 1852330",
+ "49E5E080 1883152",
+ "49E622C0 1885272",
+ "49E97628 1912517",
+ "49EB0F78 1925615",
+ "49ECF008 1940993",
+ "49EE6B28 1953125",
+ "49F07B58 1970027",
+ "49F42400 2000000",
+ "49F42400 2e6",
+ "49F83168 2033197",
+ "49F9A7F0 2045182",
+ "4A00BFF0 2109436",
+ "4A026540 2136400",
+ "4A033A6C 2150043",
+ "4A04B4A0 2174248",
+ "4A060400 2195712",
+ "4A07A238 2222222",
+ "4A07BF90 22241e2",
+ "4A07DC94 2225957",
+ "4A086E50 2235284",
+ "4A0BBCA0 2289448",
+ "4A0C6D5C 2300759",
+ "4A0C8A60 2302616",
+ "4A0CE124 2308169",
+ "4A0DFAA8 2326186",
+ "4A0EBF40 2338768",
+ "4A0F78D0 2350644",
+ "4A11B7F8 2387454",
+ "4A122A1C 2394759",
+ "4A133D40 2412368",
+ "4A1801B4 2490477",
+ "4A1847A8 2494954",
+ "4A1CBA34 2567821",
+ "4A1DF0A0 2587688",
+ "4A1E41C8 2592882",
+ "4A1EB100 26e5",
+ "4A205244 2626705",
+ "4A21E044 2652177",
+ "4A26648C 2726179",
+ "4A2AC054 2797589",
+ "4A2CB0BC 2829359",
+ "4A2CD31C 2831559",
+ "4A31197C 2901599",
+ "4A348270 2957468",
+ "4A34BF94 2961381",
+ "4A35E3BC 2980079",
+ "4A360ACC 2982579",
+ "4A371B00 3e6",
+ "4A3A8664 3056025",
+ "4A3A9FBC 3057647",
+ "4A3DC308 3109058",
+ "4A3FD4D8 3142966",
+ "4A4542A0 3231912",
+ "4A455580 3233120",
+ "4A4588C0 3236400",
+ "4A4789C8 3269234",
+ "4A4A4C30 3314444",
+ "4A4B7354 3333333",
+ "4A4E0AB0 3375788",
+ "4A4FB144 3402833",
+ "4A559F80 3500000",
+ "4A57F910 35385e2",
+ "4A587710 3546564",
+ "4A59A12C 3565643",
+ "4A5B02BC 3588271",
+ "4A5CA22C 3614859",
+ "4A61D204 3699841",
+ "4A643160 3738712",
+ "4A64E50C 3750211",
+ "4A69C664 3830169",
+ "4A6AEC60 3848984",
+ "4A6BC828 3863050",
+ "4A6C4990 3871332",
+ "4A6D1F44 3885009",
+ "4A6D446C 3887387",
+ "4A6E0D58 3900245.875",
+ "4A6E7C80 3907360",
+ "4A6EE6D0 3914164",
+ "4A6FB810 3927556",
+ "4A71C760 3961304",
+ "4A72DAE4 3978937",
+ "4A73BFD0 3993588",
+ "4A742400 4000000",
+ "4A742400 40e5",
+ "4A764350 4034772",
+ "4A76A054 4040725",
+ "4A76F100 4045888",
+ "4A77067C 4047263",
+ "4A78EF20 4078536",
+ "4A7977F0 4087292",
+ "4A7A4070 4100124",
+ "4A7D6CAC 4152107",
+ "4A7EA8E4 4172345",
+ "4A7F9270 4187292",
+ "4A7FA2A8 4188330",
+ "4A7FBBC0 4189936",
+ "4A809182 4212929",
+ "4A80C4C6 4219491",
+ "4A816500 4240000",
+ "4A81B3C2 4250081",
+ "4A83981E 4312079",
+ "4A83EE56 4323115",
+ "4A8475E6 4340467",
+ "4A852C38 4363804",
+ "4A8535E2 4365041",
+ "4A869D78 4411068",
+ "4A86F0C4 4421730",
+ "4A879868 4443188",
+ "4A87A238 4444444",
+ "4A87A5D4 4444906",
+ "4A8A8CC0 454e4",
+ "4A8AA648 4543268",
+ "4A8C4492 4596297",
+ "4A8C6180 46e5",
+ "4A8C7308 4602244",
+ "4A8CBC8A 4611653",
+ "4A8CE696 4617035",
+ "4A8EDADE 4681071",
+ "4A909D22 4738705",
+ "4A93186E 4820023",
+ "4A95AD2C 4904598",
+ "4A95C034 4907034",
+ "4A96488A 4924485",
+ "4A967D0A 4931205",
+ "4A96D020 4941840",
+ "4A97A78C 4969414",
+ "4A9805CC 4981478",
+ "4A989680 5000000",
+ "4A989680 5e6",
+ "4A98A126 5001363",
+ "4A997A56 5029163",
+ "4A9C0BE2 5113329",
+ "4A9C4A28 51213e2",
+ "4A9D2884 5149762",
+ "4A9D3C3E 5152287",
+ "4A9E6AC2 5191009",
+ "4A9EC846 5202979",
+ "4A9F9B60 523e4",
+ "4AA26E2E 5322519.25",
+ "4AA2AC4E 5330471",
+ "4AA3F010 5371912",
+ "4AA4342C 5380630",
+ "4AA47D50 5389992",
+ "4AA567C0 542e4",
+ "4AA5BE9A 5431117",
+ "4AA851B4 5515482",
+ "4AA98AC6 5555555",
+ "4AAA8446 5587491",
+ "4AAADEDE 5599087",
+ "4AAB717A 5617853",
+ "4AABA8FC 5624958",
+ "4AABAEB6 5625691",
+ "4AAC1C5C 5639726",
+ "4AAC5638 5647132",
+ "4AAC60CC 5648486",
+ "4AADA0CC 5689446",
+ "4AAEBEC2 5726049",
+ "4AAF5F22 5746577",
+ "4AB1200E 5804039",
+ "4AB2AC30 5854744",
+ "4AB365BC 5878494",
+ "4AB42BD6 5903851",
+ "4AB4AA00 592e4",
+ "4AB5D47A 5958205",
+ "4AB5F5C0 5962464",
+ "4AB624EA 5968501",
+ "4AB67498 59787e2",
+ "4AB67EC0 598e4",
+ "4AB6EA94 5993802",
+ "4AB72C96 6002251",
+ "4AB8778E 6044615",
+ "4AB8A82A 6050837",
+ "4AB8F47C 6060606",
+ "4ABAC962 6120625",
+ "4ABAF6A4 6126418",
+ "4ABE7654 6241066",
+ "4ABEED48 6256292",
+ "4AC0B474 6314554",
+ "4AC3864A 6406949",
+ "4AC4FFF8 6455292",
+ "4AC53036 6461467",
+ "4AC6ED2E 6518423",
+ "4AC79534 6539930",
+ "4AC7B6D8 6544236",
+ "4AC80002 6553601",
+ "4AC8C9A6 6579411",
+ "4AC95AAA 6597973",
+ "4ACAD5E2 6646513",
+ "4ACB7354 6666666",
+ "4ACD8D7A 6735549",
+ "4ACDB482 6740545",
+ "4ACE8B80 6768064",
+ "4ACECEAE 6776663",
+ "4ACF4680 6792e3",
+ "4AD21726 6884243",
+ "4AD35CA6 6925907",
+ "4AD391DA 6932717",
+ "4AD3FA36 6946075",
+ "4AD449CA 6956261",
+ "4AD4689E 6960207",
+ "4AD5562C 6990614",
+ "4AD59F80 7e6",
+ "4AD5AA46 7001379",
+ "4AD79484 7064130",
+ "4AD7F70C 7076742",
+ "4AD93EB4 7118682",
+ "4ADA6FE0 7157744",
+ "4ADAEC78 7173692",
+ "4ADB2E88 7182148",
+ "4ADC8C1E 7226895",
+ "4ADE9354 7293354",
+ "4ADEECEE 7304823",
+ "4ADF6380 7320000",
+ "4AE0F386 7371203",
+ "4AE13F14 7380874",
+ "4AE21AA8 7408980",
+ "4AE270D6 7420011",
+ "4AE35622 7449361",
+ "4AE3E6E2 7467889",
+ "4AE44FB4 7481306",
+ "4AE52A58 7509292",
+ "4AE58934 7521434",
+ "4AE664B4 7549530",
+ "4AE88AB0 7619928",
+ "4AE93032 7641113",
+ "4AEA3A4E 7675175",
+ "4AED5BE2 7777777",
+ "4AEE1C9E 7802447",
+ "4AEF0AD0 7832936",
+ "4AF1EA78 7927100",
+ "4AF1FA8C 7929158",
+ "4AF29330 7948696",
+ "4AF315B8 7965404",
+ "4AF3478A 7971781",
+ "4AF42400 8000000",
+ "4AF42400 80e5",
+ "4AF42400 8e6",
+ "4AF5FD28 8060564",
+ "4AF6C0A4 8085586",
+ "4AF6FB7E 8093119",
+ "4AF8F0A8 8157268",
+ "4AF8F8D6 8158315",
+ "4AF93C48 8166948",
+ "4AFC99DE 8277231",
+ "4AFD5B0C 8301958",
+ "4AFE6200 8335616",
+ "4AFFBF4A 8380325",
+ "4AFFEEB6 8386395",
+ "4B000006 8388614.5",
+ "4B00828C 8422028",
+ "4B011844 8460356",
+ "4B01407C 8470652",
+ "4B02273A 8529722",
+ "4B022BC6 8530886",
+ "4B023525 8533285",
+ "4B0250EA 8540394",
+ "4B031558 8590680",
+ "4B03AE76 8629878",
+ "4B045588 8672648",
+ "4B053590 873e4",
+ "4B053BC3 8731587",
+ "4B06CC74 8834164",
+ "4B0746D8 8865496",
+ "4B0767DC 8873948",
+ "4B07A238 8888888",
+ "4B07B00F 8892431",
+ "4B086DB8 8940984",
+ "4B089CC7 8953031",
+ "4B08C382 8962946",
+ "4B090452 8979538",
+ "4B092DFD 8990205",
+ "4B094C1B 8997915",
+ "4B095440 90e5",
+ "4B0A74EA 9073898",
+ "4B0AD089 9097353",
+ "4B0B24CD 9118925",
+ "4B0B5716 9131798",
+ "4B0B7E9B 9141915",
+ "4B0CE24D 9232973",
+ "4B0DA6B5 9283253",
+ "4B0F1B27 9378599",
+ "4B0F27F1 9381873",
+ "4B0F6EC0 94e5",
+ "4B1026B5 9447093",
+ "4B1039CC 9451980",
+ "4B10AECF 9481935",
+ "4B1122D6 9511638",
+ "4B116CC6 9530566",
+ "4B11B8B0 955e4",
+ "4B11F652 9565778",
+ "4B123145 9580869",
+ "4B138D70 967e4",
+ "4B139EFD 9674493",
+ "4B13F52A 9696554",
+ "4B143BC8 9714632",
+ "4B1454CF 9721039",
+ "4B14A8ED 9742573",
+ "4B1502F9 9765625",
+ "4B154D15 9784597",
+ "4B15A07C 9805948",
+ "4B15BCBA 9813178",
+ "4B15DE34 9821748",
+ "4B163AAA 9845418",
+ "4B16ABAB 9874347",
+ "4B16DE4B 9887307",
+ "4B16F230 9892400",
+ "4B1702D3 9896659",
+ "4B170F0D 9899789",
+ "4B174328 9913128",
+ "4B175BA0 9919392",
+ "4B1767F3 9922547",
+ "4B176B01 9923329",
+ "4B17EB48 9956168",
+ "4B1877F8 9992184",
+ "4B18967F 9999999",
+ "4B189680 1e7",
+ "4B1A1A17 10099223",
+ "4B24CA65 10799717",
+ "4B298AC7 11111111",
+ "4B30A3FF 11576319",
+ "4B317911 11630865",
+ "4B3840E2 12075234",
+ "4B40A3B2 12624818",
+ "4B40F04B 12644427",
+ "4B41CE98 12701336",
+ "4B437F39 12812089",
+ "4B4698B8 13015224",
+ "4B472556 13051222",
+ "4B47D6E3 13096675",
+ "4B4891A0 13144480",
+ "4B519C31 13737009",
+ "4B528654 13796948",
+ "4B59132F 14226223",
+ "4B7749E2 16206306",
+ "4B77FFFA 16252921.5",
+ "4B821910 17052193",
+ "4B868F0E 17636892",
+ "4B876520 17746497",
+ "4B87D6B8 17804655",
+ "4B8958EE 18002395",
+ "4B8C3138 18375281",
+ "4B8E6E42 18668677",
+ "4B90E1D8 1899e4",
+ "4B970FE0 198e5",
+ "4B998342 20121220",
+ "4B99AFB0 20143968",
+ "4B9EFAE6 20837836",
+ "4BA0EFEE 21094364",
+ "4BA17304 21161480",
+ "4BA4B683 21589254",
+ "4BA5C352 21726885",
+ "4BA98AC7 22222222",
+ "4BAA977F 22359806",
+ "4BAB74BB 22473078",
+ "4BAC9FDC 22626233",
+ "4BAFF5C0 23063423",
+ "4BB03EC4 23100809",
+ "4BB550B8 23765361",
+ "4BB809B4 24122215",
+ "4BBB7268 24569041",
+ "4BC360D5 25608618",
+ "4BC876A0 26275135",
+ "4BC8865D 26283194",
+ "4BD04730 27299423",
+ "4BD47306 27846156",
+ "4BDC7D50 289e5",
+ "4BDE68C9 29151634",
+ "4BE05D9F 29408062",
+ "4BE4E1C0 3e7",
+ "4BE6DDA7 30260046",
+ "4BE92801 30560258",
+ "4BE9EDCF 30661534",
+ "4BEDEB96 31184683",
+ "4BF36011 31899682",
+ "4BF36954 31904423",
+ "4BF6409F 32276798",
+ "4BF9A486 32721165",
+ "4BFD82E8 33228241",
+ "4BFD8644 33229960",
+ "4BFE502A 33333333",
+ "4C00A562 33723784",
+ "4C033DE4 34404238",
+ "4C051CFE 34894840",
+ "4C0583B0 35e6",
+ "4C083F9D 35716724",
+ "4C09AD09 36090916",
+ "4C09C2FF 36113404",
+ "4C0A499F 36251260",
+ "4C0A8C89 36319780",
+ "4C0DDCCB 37188395",
+ "4C104B98 37826145",
+ "4C111D1D 38040692",
+ "4C13092F 38544571",
+ "4C131A57 38562139",
+ "4C133DE1 38598533",
+ "4C140640 38803710",
+ "4C1421EA 38832042",
+ "4C1793D6 39735126",
+ "4C1798D1 39740229",
+ "4C188B06 39988247",
+ "4C189680 40000000",
+ "4C1930F7 40158172",
+ "4C19402C 40173744",
+ "4C1A22A3 40405643",
+ "4C1A49B5 40445652",
+ "4C1B0974 40642e3",
+ "4C1BA3C0 40800000",
+ "4C1C6710 41000000",
+ "4C1CB407 41078812",
+ "4C1E5D2F 41514172",
+ "4C208432 42078409",
+ "4C2091AA 42092201",
+ "4C21D52C 42423473",
+ "4C22C32A 42667174",
+ "4C22C502 42669063",
+ "4C22F484 42717713",
+ "4C2521EE 43288506",
+ "4C2554BF 43340539",
+ "4C260B66 43527578",
+ "4C267A3A 43641062",
+ "4C27D8C0 44e6",
+ "4C28F9C1 44295939",
+ "4C2974CC 44421934",
+ "4C298AC7 44444444",
+ "4C2BBB93 450187e2",
+ "4C2BCC77 45035996.273704985",
+ "4C2BCC77 45035996.273704995",
+ "4C2EC292 45812296",
+ "4C2F0254 45877585",
+ "4C2FEBAE 46116538",
+ "4C316228 4650e4",
+ "4C3241CA 46729e03",
+ "4C33B3D5 47107924",
+ "4C34C276 47385048",
+ "4C353C7C 4751e4",
+ "4C357ED7 47577948",
+ "4C36E03C 47939822",
+ "4C3776F1 48094147",
+ "4C37879A 48111209",
+ "4C378A28 48113823",
+ "4C38100C 48250926",
+ "4C387BA6 48361110",
+ "4C39852B 48633003",
+ "4C39C698 487e5",
+ "4C3A43B7 48828125",
+ "4C3BA935 49194195",
+ "4C3EBC20 50000000",
+ "4C3EBC20 5e7",
+ "4C3F64A7 50172572",
+ "4C42A86B 51028396",
+ "4C43B3EF 51302332",
+ "4C4ABCB6 53146328",
+ "4C4B5762 53304714",
+ "4C4DFE60 54e6",
+ "4C4FC6F4 54467535",
+ "4C502CDC 54571890",
+ "4C507F98 54656606",
+ "4C50F2F4 54774735",
+ "4C51CEF0 55e6",
+ "4C521B40 55078143",
+ "4C53ED79 55555555",
+ "4C546716 55680090",
+ "4C559698 55990879",
+ "4C559FBD 56000244",
+ "4C57B8EA 56550310",
+ "4C5A5FF1 57245637",
+ "4C5A9928 57304222",
+ "4C5C21BE 57706234",
+ "4C5C633E 57773302",
+ "4C5DE5AC 58169007",
+ "4C5DF914 58188878",
+ "4C5ED784 58416654",
+ "4C5F573E 58547448",
+ "4C614E78 59062754",
+ "4C632038 59539680",
+ "4C644B5C 59846e3",
+ "4C64E1C0 60e6",
+ "4C64E1C0 6e7",
+ "4C689082 60965384",
+ "4C6BDF8A 61832742",
+ "4C6E06FF 62397437",
+ "4C6F6694 62757456",
+ "4C6FCEA0 62864002",
+ "4C701CD2 62944073",
+ "4C705370 63e6",
+ "4C70F7D8 63168350",
+ "4C72CDD2 63649610",
+ "4C737ED7 63830875",
+ "4C742400 64e6",
+ "4C7574BD 64344821",
+ "4C75BDCE 64419642",
+ "4C75D374 64441808",
+ "4C760E08 64501793",
+ "4C77CB28 64957599",
+ "4C77F490 650e5",
+ "4C786B05 651213e2",
+ "4C7C0FBC 66076400",
+ "4C7E502A 66666666",
+ "4C7E94DA 66737e3",
+ "4C805E2A 67301713",
+ "4C81E6AE 68105580",
+ "4C820CD6 68183731",
+ "4C8245D1 68300424",
+ "4C82AFB9 68517318",
+ "4C835DDE 68873971",
+ "4C84774B 69450330",
+ "4C84AA79 69555144",
+ "4C84EA2D 69685606",
+ "4C84EAB0 69686659",
+ "4C8500B2 69731732",
+ "4C856E45 69956135",
+ "4C8583B0 70e6",
+ "4C867FF6 70516656",
+ "4C875EB4 70972830",
+ "4C876BF8 71e6",
+ "4C881818 71352512",
+ "4C8A0C4B 72376922",
+ "4C8B06DC 72890080",
+ "4C8B8DEE 73166703",
+ "4C8C1066 73433906",
+ "4C8D47E6 74071854",
+ "4C8D53A6 74095920",
+ "4C8DE669 74396490",
+ "4C8F7E94 75232413",
+ "4C9000C1 75499016",
+ "4C9086E4 75773725",
+ "4C909486 75801648",
+ "4C916E5A 76247763",
+ "4C91B8B0 76400000",
+ "4C924EDB 76707543",
+ "4C92560D 76722281",
+ "4C9266CE 76756590",
+ "4C931780 77118461",
+ "4C93E007 77529147",
+ "4C94596E 77777777",
+ "4C96C2DE 79042286",
+ "4C977803 79413272",
+ "4C983B64 79813406",
+ "4C98404F 79823479",
+ "4C989680 80000000",
+ "4C989680 80e6",
+ "4C989680 8e7",
+ "4C9902F5 80222122",
+ "4C9C7003 82018330",
+ "4C9DD0C9 82740809",
+ "4C9DD3A0 82746620",
+ "4C9E0069 82838342",
+ "4C9EC178 83233730",
+ "4C9FAA89 83711047",
+ "4C9FB1A1 83725573",
+ "4C9FC9F8 83775423",
+ "4CA049E9 84037448",
+ "4CA15A3B 84595161",
+ "4CA2494E 85084788",
+ "4CA2C726 85342511",
+ "4CA39B68 85777219",
+ "4CA39F84 85785631",
+ "4CA3D982 85904404",
+ "4CA434D9 86091465",
+ "4CA46494 86189216",
+ "4CA4F4BB 86484437",
+ "4CA583B6 86777268",
+ "4CA5DE2A 86962508",
+ "4CA75842 87736852",
+ "4CA772C7 87791158",
+ "4CA79837 87867832",
+ "4CA91A86 88658996",
+ "4CA98AC7 88888888",
+ "4CA9AE6E 88961903",
+ "4CAA0527 89139509",
+ "4CAAF463 89629465",
+ "4CAB2E71 89748360",
+ "4CABAFA0 90012929",
+ "4CAC5B2C 90364256",
+ "4CAD8168 90966848",
+ "4CAE418F 91360377",
+ "4CAE5E60 91419389",
+ "4CAF8C7D 92038121",
+ "4CAFB717 92125366",
+ "4CAFEEC6 92239407",
+ "4CAFFC4E 92267121",
+ "4CB2023C 93327838",
+ "4CB43063 94470938",
+ "4CB54CCD 95053418",
+ "4CB55FC0 95092224",
+ "4CB59EA6 95221044",
+ "4CB6083B 95437272",
+ "4CB6C1FD 95817703",
+ "4CB811DB 96505557",
+ "4CB873C8 96706114",
+ "4CB892F4 96769950",
+ "4CB8CA18 96882881",
+ "4CB8D1AB 96898389",
+ "4CB97520 97233152",
+ "4CBA389F 97633526",
+ "4CBB448C 98182244",
+ "4CBBE9B3 98520472",
+ "4CBCBE20 98955522",
+ "4CBCC438 98968000",
+ "4CBD2764 99171105",
+ "4CBD7B8E 99343471",
+ "4CBD9728 994e5",
+ "4CBEBC20 99999999",
+ "4CBEBC20 100000000",
+ "4CBEBC20 10e7",
+ "4CBEBC20 1e8",
+ "4CD3ED79 111111111",
+ "4CEB79A3 123456789",
+ "4CF1776B 126597973",
+ "4D06794E 141006042",
+ "4D0B1EA5 145877585",
+ "4D0B5A4E 146121952",
+ "4D4EB950 216765690",
+ "4D53ED79 222222222",
+ "4D68D4A5 244140625",
+ "4D81EC22 272467e3",
+ "4D8F0D18 3e8",
+ "4D95E1D4 314325637",
+ "4D9EF21B 333333333",
+ "4DB56464 380406926",
+ "4DBEBC20 4e8",
+ "4DD3ED79 444444444",
+ "4DE4E1C0 480000000",
+ "4DEE6B28 500000000",
+ "4E04746C 555555555",
+ "4E0CD6EE 590723948",
+ "4E0CE5C1 590966848",
+ "4E0E440D 596706114",
+ "4E104361 605083704",
+ "4E15801D 627050305",
+ "4E16FD29 633293366",
+ "4E1EF21B 666666666",
+ "4E26E49C 7e8",
+ "4E2B2F3E 718e6",
+ "4E2BA950 72e7",
+ "4E2DC893 728900802",
+ "4E310CB5 7426e5",
+ "4E344939 756174393",
+ "4E354C05 760414536",
+ "4E396FCA 777777777",
+ "4E3EBC20 800000000",
+ "4E3F43B3 802221226",
+ "4E401940 805720085",
+ "4E465D40 832e6",
+ "4E4A4690 848405530",
+ "4E4C2A88 856334878",
+ "4E4F8C1F 870516656",
+ "4E517E45 878678326",
+ "4E53ED79 888888888",
+ "4E5479AC 891185938",
+ "4E55F9B9 897478238",
+ "4E5693A4 9e08",
+ "4E5693A4 9e8",
+ "4E57C9B2 905079926",
+ "4E58F5FE 91e07",
+ "4E59B814 913179899",
+ "4E6313B1 952429603",
+ "4E64E1C0 96e7",
+ "4E69A674 98e7",
+ "4E6B6C3C 987434744",
+ "4E6C713D 991711052",
+ "4E6E6B28 999999999",
+ "4E6E6B28 1e9",
+ "4E6E6B29 1.00000006e+09",
+ "4E9184E7 1220703125",
+ "4E932C06 1234567890",
+ "4EEE6B28 2e09",
+ "4EFFFFFD 2147483314",
+ "4EFFFFFD 2147483315",
+ "4EFFFFFE 2147483351",
+ "4EFFFFFE 2147483352",
+ "4EFFFFFE 2147483388",
+ "4EFFFFFE 2147483389",
+ "4EFFFFFE 2147483425",
+ "4EFFFFFE 2147483426",
+ "4EFFFFFF 2147483462",
+ "4EFFFFFF 2147483463",
+ "4EFFFFFF 2147483499",
+ "4EFFFFFF 2147483500",
+ "4EFFFFFF 2147483536",
+ "4EFFFFFF 2147483537",
+ "4EFFFFFF 2147483573",
+ "4EFFFFFF 2147483574",
+ "4F000000 2147483610",
+ "4F000000 2147483611",
+ "4F000000 2147483647",
+ "4F000000 2147483648",
+ "4F1502F9 25e8",
+ "4F18542C 2555653131",
+ "4F26C8DF 2798182244",
+ "4F3EBD30 3200069671",
+ "4F41562C 3243650005",
+ "4F44EA11 3303674053",
+ "4F52DEF1 3537826145",
+ "4F6E6B28 4e9",
+ "4F712632 4045812296",
+ "4F820D2F 4363804324",
+ "4F920719 4899877186",
+ "4F9502F9 5e09",
+ "4F9502F9 5e9",
+ "4F9528FA 5004981478",
+ "4F9796DB 5086492111",
+ "4F9923CB 5138519684",
+ "4FA01870 5371912364",
+ "4FA7F185 5635246428",
+ "4FAB42E9 5746577930",
+ "4FB5E621 6103515625",
+ "4FBBC130 63e8",
+ "4FD09DC3 70e8",
+ "4FDC0D5B 7383725573",
+ "4FE3C54F 7642717713",
+ "4FEBBC83 791e07",
+ "4FEE6B28 80e8",
+ "4FEE6B28 8e9",
+ "5000B5F0 8637627989",
+ "50041CB9 8865899617",
+ "5005BC48 8974836059",
+ "50061C46 9e9",
+ "50097D1D 9226712162",
+ "500C1228 94e8",
+ "500C600D 942042e4",
+ "501022C7 9672793580",
+ "50119F04 9772470297",
+ "501502F9 1e10",
+ "5041B710 1.3e10",
+ "5077A845 1662e7",
+ "50B7BD75 24661173473",
+ "50CDA2D2 276e8",
+ "50D59BAF 2867e7",
+ "50E35FA9 30517578125",
+ "50E6F7CF 31e9",
+ "50F52E46 32907604691",
+ "51093AA0 36837130890",
+ "511502F9 40000000000",
+ "51197B62 412e08",
+ "51325DC2 47879823479",
+ "5139F1C6 49914078536",
+ "513DFD64 51000000000",
+ "51492A6A 54e9",
+ "51559F80 573440e5",
+ "515BCAC9 59e9",
+ "51861C46 72E9",
+ "5189D5F3 74000000000",
+ "519A997C 83e9",
+ "51A7A358 90000000000",
+ "51BA43B7 100000000000",
+ "51BA43B7 1e11",
+ "51BC208E 101e9",
+ "520840A3 1463e8",
+ "520E1BCA 152587890625",
+ "523A43B7 200000000000",
+ "5261D86F 242499697392",
+ "5282629A 280000000000",
+ "528BB2C9 3e11",
+ "52BA43B7 400000000000",
+ "52FAFDCF 539e9",
+ "530E81C6 612062576589",
+ "530EA44D 612641865679",
+ "5330644C 757596946075",
+ "5331A2BC 762939453125",
+ "533EEB57 819992132456",
+ "5368D4A5 1e12",
+ "53E8D4A5 2e12",
+ "542E9F7C 3e12",
+ "545E0B6B 3814697265625",
+ "549184E7 5e012",
+ "549BD269 5354e9",
+ "54AC2BC4 59157491e5",
+ "54CD5F7D 7056562757456",
+ "55024FFA 8955e9",
+ "550715AE 92829494e5",
+ "550C4B86 9641e9",
+ "551184E7 10000000000000",
+ "551184E7 1e13",
+ "558AC723 19073486328125",
+ "559184E7 20000000000000",
+ "55CBBA10 28000000000000",
+ "561184E7 40000000000000",
+ "561C4000 42949672960001",
+ "5699E0B1 84595161401484",
+ "56A2D793 89523386091465",
+ "56AD78EC 95367431640625",
+ "56B5E621 1e14",
+ "5783EEC3 290123e9",
+ "579F295D 350000000000000",
+ "57B5E621 400000000000000",
+ "57B5E621 40e13",
+ "57C0D019 424000000000000",
+ "57D4DED7 468107100525890",
+ "57D8D727 476837158203125",
+ "57E35FA9 5e14",
+ "5809CD5F 606060606060606",
+ "58267002 732000000000000",
+ "5835E621 800000000000000",
+ "5835E621 8e14",
+ "58635FA9 1000000000000000",
+ "58635FA9 1e15",
+ "58800000 1125899906842624.125",
+ "58800000 1125899906842901.875",
+ "58956F79 1314448000000000",
+ "59000000 2251799813685248.25",
+ "59000000 2251799813685803.75",
+ "59078678 2384185791015625",
+ "593D7A62 3333333333333333",
+ "59635FA9 4000000000000000",
+ "59800000 4503599627370496.5",
+ "59800000 4503599627370497.5",
+ "59800000 4503599627475352.5",
+ "59800000 4503599627475353.5",
+ "598E1BCA 5000000000000000",
+ "59D529AF 75e14",
+ "59E35FA9 8000000000000000",
+ "5A000000 9007199254740992",
+ "5A000000 9007199254740993",
+ "5A000000 9007199254740994",
+ "5A000000 9007199254740995",
+ "5A09D865 97e14",
+ "5A0CA459 9896800000000000",
+ "5A0E1BCA 1e16",
+ "5A296816 11920928955078125",
+ "5B53C21C 59604644775390625",
+ "5B64158F 642e14",
+ "5BB1A2BC 1e17",
+ "5C845951 298023223876953125",
+ "5CCE8061 465e15",
+ "5D5E0B6B 1e18",
+ "5DA56FA6 1490116119384765625",
+ "5E056279 2402844368454405395.2",
+ "5ECECB8F 7450580596923828125",
+ "5EF9CCD9 9e18",
+ "5F053A0D 96e017",
+ "5F08DFC5 9.862818194192001e18",
+ "5F0AC723 1e19",
+ "60805E9A 74e18",
+ "609C2007 9e19",
+ "60A3959D 943e17",
+ "60AD78EC 1e20",
+ "6258D727 1e21",
+ "64078678 1e22",
+ "657BBCFA 743e20",
+ "659CFBB2 92666518056446206563E3",
+ "65A96816 1e23",
+ "65A96816 9.999999999999999e22",
+ "6723E072 773886e18",
+ "6753C21C 1e24",
+ "6C186875 737e24",
+ "6D1B18AB 3e27",
+ "715C3BD0 1090544144181609348835077142190",
+ "717A6A7F 124e28",
+ "729C8290 62e29",
+ "73FC6F7C 4e31",
+ "745642CC 67902e27",
+ "7487AF20 86e30",
+ "749DC5AE 1e32",
+ "760A0CF8 7e32",
+ "771209B2 29620e29",
+ "777684DF 5e33",
+ "791A130C 5e34",
+ "7E967699 1e38",
+ "7F000000 1.7014118346046923e+38",
+ "7F7FFFFF 3.4028234664e38",
+ "7F7FFFFF 3.4028234665e38",
+ "7F7FFFFF 3.4028234666e38",
+ "7F800000 3.5028234666e38",
+ "7F800000 51823e34",
+ "7F800000 555e36",
+ "7F800000 912e37",
+ "7F800000 92487298e33",
+ "7F800000 778e39",
+ "7F800000 8e41",
+ "7F800000 81e40",
+ "7F800000 90e40",
+ "7F800000 1.7339253062092163730578609458683877051596800000000000000000000000e+42",
+ "7F800000 1778e39",
+ "7F800000 598e40",
+ "7F800000 808e40",
+ "7F800000 203e41",
+ "7F800000 89e42",
+ "7F800000 2e44",
+ "7F800000 5e44",
+ "7F800000 2.1470977154320536489471030463761883783915110400000000000000000000e+45",
+ "7F800000 6e45",
+ "7F800000 2091e44",
+ "7F800000 368e45",
+ "7F800000 967e45",
+ "7F800000 442e46",
+ "7F800000 7442e45",
+ "7F800000 4e49",
+ "7F800000 892091e44",
+ "7F800000 5e50",
+ "7F800000 7e50",
+ "7F800000 2e51",
+ "7F800000 3e51",
+ "7F800000 39e50",
+ "7F800000 7e51",
+ "7F800000 1.9189205311132686907264385602245237137907390376574976000000000000e+52",
+ "7F800000 2.0972622234386619214559824785284023792871122537545728000000000000e+52",
+ "7F800000 1e53",
+ "7F800000 1.7664960224650106892054063261344555646357024359107788800000000000e+53",
+ "7F800000 335e51",
+ "7F800000 2e54",
+ "7F800000 2.8184483231688951563253238886553506793085187889855201280000000000e+54",
+ "7F800000 6472e51",
+ "7F800000 2e55",
+ "7F800000 5e55",
+ "7F800000 5667844e49",
+ "7F800000 62e055",
+ "7F800000 8e056",
+ "7F800000 1.0001803374372191849407179462120053338028379051879898808320000000e+57",
+ "7F800000 5e57",
+ "7F800000 1.8607245283054342363818436991534856973992070520151142825984000000e+58",
+ "7F800000 7.0420557077594588669468784357561207962098443483187940792729600000e+59",
+ "7F800000 9e59",
+ "7F800000 99e59",
+ "7F800000 13e60",
+ "7F800000 4.4900312744003159009338275160799498340862630046359789166919680000e+61",
+ "7F800000 1e64",
+ "7F800000 88e65",
+ "7F800000 3e69",
+ "7F800000 59e68",
+ "7F800000 86e69",
+ "7F800000 2224e68",
+ "7F800000 9e74",
+ "7F800000 42e74",
+ "7F800000 7.2370055773322621e+75",
+ "7F800000 9184e72",
+ "7F800000 93e74",
+ "7F800000 40041e073",
+ "7F800000 7e77",
+ "7F800000 44e80",
+ "7F800000 9e82",
+ "7F800000 242e81",
+ "7F800000 527e81",
+ "7F800000 9e83",
+ "7F800000 9e84",
+ "7F800000 1e85",
+ "7F800000 7e85",
+ "7F800000 1e86",
+ "7F800000 503e085",
+ "7F800000 112e86",
+ "7F800000 6e88",
+ "7F800000 5e89",
+ "7F800000 8358109e84",
+ "7F800000 90054602635948575728E72",
+ "7F800000 9271e88",
+ "7F800000 9153e89",
+ "7F800000 4e093",
+ "7F800000 3e95",
+ "7F800000 3608e92",
+ "7F800000 791e093",
+ "7F800000 8545e94",
+ "7F800000 80e98",
+ "7F800000 980e98",
+ "7F800000 83126e97",
+ "7F800000 7e105",
+ "7F800000 538e122",
+ "7F800000 7e127",
+ "7F800000 1e128",
+ "7F800000 7795e136",
+ "7F800000 7549530e188",
+ "7F800000 71e223",
+ "7F800000 4e250",
+ "7F800000 1e256",
+ "7F800000 1.01e256",
+ "7F800000 67902e276",
+ "7F800000 9748e282",
+ "7F800000 1e300",
+ "7F800000 19e306",
+ "7F800000 1.797693134862315700000000000000001e308",
+ "7F800000 1.7976931348623157e308",
+ "7F800000 1.7976931348623158e308",
+ "7F800000 0.1e310",
+ "7F800000 1.832312213213213232132132143451234453123412321321312e308",
+ "7F800000 1.8e308",
+ "7F800000 1.9e308",
+ "7F800000 1234456789012345678901234567890e9999999999999999999999999999",
+ "7F800000 12e1342",
+ "7F800000 12e13424",
+ "7F800000 148e3032",
+ "7F800000 18e88640",
+ "7F800000 1e1000",
+ "7F800000 1e1853",
+ "7F800000 1e414218",
+ "7F800000 2139879401095466344511101915470454744.9813888656856943E+272",
+ "7F800000 21e440",
+ "7F800000 21e44003",
+ "7F800000 246723473e3813",
+ "7F800000 24e4421730",
+ "7F800000 2529e2734",
+ "7F800000 26e077774",
+ "7F800000 28e2557",
+ "7F800000 2e08987",
+ "7F800000 2e0898765",
+ "7F800000 2e3000",
+ "7F800000 2e30000000000000000",
+ "7F800000 2e69915",
+ "7F800000 2e801",
+ "7F800000 322e62600000",
+ "7F800000 35e702",
+ "7F800000 39e436",
+ "7F800000 3e60868",
+ "7F800000 3e84959",
+ "7F800000 3e8495912",
+ "7F800000 412e0806",
+ "7F800000 4196e952",
+ "7F800000 43e40076",
+ "7F800000 442e4688",
+ "7F800000 44e864",
+ "7F800000 464e3945",
+ "7F800000 473e3813",
+ "7F800000 47859e743",
+ "7F800000 486e494",
+ "7F800000 49e807",
+ "7F800000 50e4395",
+ "7F800000 51e1566",
+ "7F800000 5400e987",
+ "7F800000 549e57273",
+ "7F800000 555e361951",
+ "7F800000 5e330",
+ "7F800000 5e5728",
+ "7F800000 5e620",
+ "7F800000 5e7873",
+ "7F800000 5e823",
+ "7F800000 5e82392",
+ "7F800000 626e974",
+ "7F800000 62e2929",
+ "7F800000 6472e511",
+ "7F800000 696e840",
+ "7F800000 6e188853",
+ "7F800000 6e356932",
+ "7F800000 6e3569326",
+ "7F800000 6e804",
+ "7F800000 6e984",
+ "7F800000 71758e219652",
+ "7F800000 718e68396",
+ "7F800000 71e914",
+ "7F800000 71e91432",
+ "7F800000 7230489e80000",
+ "7F800000 74e608",
+ "7F800000 75e2224",
+ "7F800000 7859e743",
+ "7F800000 7868e94050",
+ "7F800000 788035e61382",
+ "7F800000 79e1632",
+ "7F800000 7e05401",
+ "7F800000 7e12780",
+ "7F800000 7e2000",
+ "7F800000 7e334",
+ "7F800000 7e33455637",
+ "7F800000 7e41392",
+ "7F800000 7e670471",
+ "7F800000 7e67047175",
+ "7F800000 7e998",
+ "7F800000 808e1755",
+ "7F800000 808e17555",
+ "7F800000 83126e978",
+ "7F800000 83e872",
+ "7F800000 8955e946",
+ "7F800000 89e80000",
+ "7F800000 8e1456105",
+ "7F800000 8e43145",
+ "7F800000 8e431456",
+ "7F800000 8e5087",
+ "7F800000 8e5410",
+ "7F800000 8e5410288",
+ "7F800000 8e679",
+ "7F800000 8e88640",
+ "7F800000 8e905",
+ "7F800000 8e921",
+ "7F800000 8e938662",
+ "7F800000 8e938662882",
+ "7F800000 8e952",
+ "7F800000 915e2486",
+ "7F800000 945e455",
+ "7F800000 953e862",
+ "7F800000 953e8624",
+ "7F800000 963e6685",
+ "7F800000 963e66858",
+ "7F800000 964e858",
+ "7F800000 96e952",
+ "7F800000 9748e2826",
+ "7F800000 976e4108",
+ "7F800000 976e41088617",
+ "7F800000 9837e699095",
+ "7F800000 98e94712",
+ "7F800000 98e947129",
+ "7F800000 99e59958885",
+ "7F800000 99e619",
+ "7F800000 9e1632",
+ "7F800000 9e20735",
+ "7F800000 9e40000000",
+ "7F800000 9e563",
+ "7F800000 9e795",
+ "7F800000 9e904",
+)