@glandais/vcyclist-engine 6.0.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,123 +30,125 @@
30
30
  var imul = Math.imul;
31
31
  var hypot = Math.hypot;
32
32
  var sign = Math.sign;
33
- var protoOf = kotlin_kotlin.$_$.j7;
34
- var initMetadataForCompanion = kotlin_kotlin.$_$.v6;
33
+ var protoOf = kotlin_kotlin.$_$.s7;
34
+ var initMetadataForCompanion = kotlin_kotlin.$_$.e7;
35
35
  var VOID = kotlin_kotlin.$_$.a;
36
- var getNumberHashCode = kotlin_kotlin.$_$.q6;
37
- var equals = kotlin_kotlin.$_$.n6;
38
- var initMetadataForClass = kotlin_kotlin.$_$.u6;
39
- var toString = kotlin_kotlin.$_$.m7;
40
- var hashCode = kotlin_kotlin.$_$.t6;
36
+ var getNumberHashCode = kotlin_kotlin.$_$.z6;
37
+ var equals = kotlin_kotlin.$_$.w6;
38
+ var initMetadataForClass = kotlin_kotlin.$_$.d7;
39
+ var toString = kotlin_kotlin.$_$.v7;
40
+ var hashCode = kotlin_kotlin.$_$.c7;
41
41
  var ElevationGainPreset_DEM_getInstance = kotlin_io_github_glandais_gpx.$_$.c;
42
- var initMetadataForObject = kotlin_kotlin.$_$.a7;
43
- var getBooleanHashCode = kotlin_kotlin.$_$.p6;
44
- var isFinite = kotlin_kotlin.$_$.ma;
45
- var IllegalArgumentException_init_$Create$ = kotlin_kotlin.$_$.a2;
46
- var Unit_instance = kotlin_kotlin.$_$.g1;
42
+ var initMetadataForObject = kotlin_kotlin.$_$.j7;
43
+ var getBooleanHashCode = kotlin_kotlin.$_$.y6;
44
+ var isFinite = kotlin_kotlin.$_$.hb;
45
+ var IllegalArgumentException_init_$Create$ = kotlin_kotlin.$_$.e2;
46
+ var Unit_instance = kotlin_kotlin.$_$.k1;
47
47
  var ElevationGainOptions = kotlin_io_github_glandais_gpx.$_$.y;
48
- var CoroutineImpl = kotlin_kotlin.$_$.d5;
48
+ var CoroutineImpl = kotlin_kotlin.$_$.l5;
49
49
  var PointPerDistance_instance = kotlin_io_github_glandais_gpx.$_$.o;
50
50
  var ElevationStep_instance = kotlin_io_github_glandais_gpx.$_$.l;
51
- var get_COROUTINE_SUSPENDED = kotlin_kotlin.$_$.o4;
51
+ var get_COROUTINE_SUSPENDED = kotlin_kotlin.$_$.w4;
52
52
  var PointPerSecond_instance = kotlin_io_github_glandais_gpx.$_$.p;
53
53
  var PathSimplifier_instance = kotlin_io_github_glandais_gpx.$_$.m;
54
54
  var ElevationGain_instance = kotlin_io_github_glandais_gpx.$_$.k;
55
- var initMetadataForCoroutine = kotlin_kotlin.$_$.w6;
56
- var Companion_instance = kotlin_kotlin.$_$.e1;
57
- var collectionSizeOrDefault = kotlin_kotlin.$_$.x2;
58
- var ArrayList_init_$Create$ = kotlin_kotlin.$_$.i1;
59
- var enumEntries = kotlin_kotlin.$_$.f5;
60
- var Enum = kotlin_kotlin.$_$.t9;
61
- var noWhenBranchMatchedException = kotlin_kotlin.$_$.qa;
62
- var last = kotlin_kotlin.$_$.q3;
63
- var toIntArray = kotlin_kotlin.$_$.f4;
64
- var sortedWith = kotlin_kotlin.$_$.b4;
65
- var toMutableList = kotlin_kotlin.$_$.j4;
66
- var ArrayList_init_$Create$_0 = kotlin_kotlin.$_$.j1;
67
- var first = kotlin_kotlin.$_$.j3;
68
- var removeAll = kotlin_kotlin.$_$.w3;
69
- var numberRangeToNumber = kotlin_kotlin.$_$.f7;
70
- var Vector3D = kotlin_io_github_glandais_elevation.$_$.h;
71
- var emptyList = kotlin_kotlin.$_$.g3;
72
- var coerceIn = kotlin_kotlin.$_$.u7;
55
+ var initMetadataForCoroutine = kotlin_kotlin.$_$.f7;
56
+ var Companion_instance = kotlin_kotlin.$_$.i1;
57
+ var collectionSizeOrDefault = kotlin_kotlin.$_$.c3;
58
+ var ArrayList_init_$Create$ = kotlin_kotlin.$_$.m1;
59
+ var enumEntries = kotlin_kotlin.$_$.n5;
60
+ var Enum = kotlin_kotlin.$_$.na;
61
+ var noWhenBranchMatchedException = kotlin_kotlin.$_$.lb;
62
+ var last = kotlin_kotlin.$_$.w3;
63
+ var toIntArray = kotlin_kotlin.$_$.n4;
64
+ var sortedWith = kotlin_kotlin.$_$.j4;
65
+ var toMutableList = kotlin_kotlin.$_$.r4;
66
+ var ArrayList_init_$Create$_0 = kotlin_kotlin.$_$.n1;
67
+ var first = kotlin_kotlin.$_$.p3;
68
+ var removeAll = kotlin_kotlin.$_$.e4;
69
+ var numberRangeToNumber = kotlin_kotlin.$_$.o7;
70
+ var Vector3D = kotlin_io_github_glandais_elevation.$_$.g;
71
+ var emptyList = kotlin_kotlin.$_$.l3;
72
+ var coerceIn = kotlin_kotlin.$_$.d8;
73
73
  var DouglasPeucker_instance = kotlin_io_github_glandais_elevation.$_$.b;
74
- var FunctionAdapter = kotlin_kotlin.$_$.b6;
75
- var isInterface = kotlin_kotlin.$_$.c7;
76
- var Comparator = kotlin_kotlin.$_$.s9;
77
- var compareValues = kotlin_kotlin.$_$.m4;
78
- var until = kotlin_kotlin.$_$.z7;
79
- var Pair = kotlin_kotlin.$_$.z9;
80
- var listOf = kotlin_kotlin.$_$.r3;
81
- var initMetadataForInterface = kotlin_kotlin.$_$.y6;
82
- var Default_getInstance = kotlin_kotlin.$_$.b1;
83
- var equals_0 = kotlin_kotlin.$_$.p8;
84
- var isNaN_0 = kotlin_kotlin.$_$.oa;
74
+ var FunctionAdapter = kotlin_kotlin.$_$.k6;
75
+ var isInterface = kotlin_kotlin.$_$.l7;
76
+ var Comparator = kotlin_kotlin.$_$.ma;
77
+ var compareValues = kotlin_kotlin.$_$.u4;
78
+ var until = kotlin_kotlin.$_$.j8;
79
+ var Pair = kotlin_kotlin.$_$.ua;
80
+ var listOf = kotlin_kotlin.$_$.x3;
81
+ var initMetadataForInterface = kotlin_kotlin.$_$.h7;
82
+ var Default_getInstance = kotlin_kotlin.$_$.e1;
83
+ var equals_0 = kotlin_kotlin.$_$.b9;
84
+ var isNaN_0 = kotlin_kotlin.$_$.jb;
85
85
  var PointField_TEMPERATURE_getInstance = kotlin_io_github_glandais_gpx.$_$.d;
86
86
  var get_entries = kotlin_io_github_glandais_gpx.$_$.a1;
87
87
  var Path = kotlin_io_github_glandais_gpx.$_$.z;
88
- var arrayCopy = kotlin_kotlin.$_$.t2;
89
- var sort = kotlin_kotlin.$_$.d4;
90
- var numberToInt = kotlin_kotlin.$_$.h7;
91
- var coerceIn_0 = kotlin_kotlin.$_$.v7;
92
- var lastOrNull = kotlin_kotlin.$_$.p3;
93
- var HashMap_init_$Create$ = kotlin_kotlin.$_$.l1;
94
- var fromInt = kotlin_kotlin.$_$.s5;
95
- var add = kotlin_kotlin.$_$.i5;
96
- var numberToLong = kotlin_kotlin.$_$.v5;
97
- var shiftLeft = kotlin_kotlin.$_$.w5;
98
- var Long = kotlin_kotlin.$_$.x9;
99
- var bitwiseAnd = kotlin_kotlin.$_$.j5;
100
- var bitwiseXor = kotlin_kotlin.$_$.l5;
101
- var copyOf = kotlin_kotlin.$_$.c3;
102
- var coerceAtLeast = kotlin_kotlin.$_$.r7;
103
- var round = kotlin_kotlin.$_$.p7;
104
- var listOf_0 = kotlin_kotlin.$_$.s3;
105
- var Collection = kotlin_kotlin.$_$.n2;
106
- var zipWithNext = kotlin_kotlin.$_$.l4;
107
- var toDoubleArray = kotlin_kotlin.$_$.e4;
108
- var joinToString = kotlin_kotlin.$_$.m3;
88
+ var arrayCopy = kotlin_kotlin.$_$.y2;
89
+ var sort = kotlin_kotlin.$_$.l4;
90
+ var numberToInt = kotlin_kotlin.$_$.q7;
91
+ var coerceIn_0 = kotlin_kotlin.$_$.e8;
92
+ var lastOrNull = kotlin_kotlin.$_$.v3;
93
+ var HashMap_init_$Create$ = kotlin_kotlin.$_$.p1;
94
+ var fromInt = kotlin_kotlin.$_$.a6;
95
+ var add = kotlin_kotlin.$_$.q5;
96
+ var numberToLong = kotlin_kotlin.$_$.e6;
97
+ var shiftLeft = kotlin_kotlin.$_$.f6;
98
+ var Long = kotlin_kotlin.$_$.sa;
99
+ var bitwiseAnd = kotlin_kotlin.$_$.r5;
100
+ var bitwiseXor = kotlin_kotlin.$_$.t5;
101
+ var copyOf = kotlin_kotlin.$_$.h3;
102
+ var coerceAtLeast = kotlin_kotlin.$_$.a8;
103
+ var fill = kotlin_kotlin.$_$.m3;
104
+ var round = kotlin_kotlin.$_$.y7;
105
+ var booleanArray = kotlin_kotlin.$_$.m6;
106
+ var listOf_0 = kotlin_kotlin.$_$.y3;
107
+ var Collection = kotlin_kotlin.$_$.s2;
108
+ var zipWithNext = kotlin_kotlin.$_$.t4;
109
+ var toDoubleArray = kotlin_kotlin.$_$.m4;
110
+ var joinToString = kotlin_kotlin.$_$.s3;
109
111
  var GpxParser_instance = kotlin_io_github_glandais_gpx.$_$.e;
110
- var copyToArray = kotlin_kotlin.$_$.f3;
112
+ var copyToArray = kotlin_kotlin.$_$.k3;
111
113
  var firstTrackAsPath = kotlin_io_github_glandais_gpx.$_$.r;
112
114
  var tracksAsPaths = kotlin_io_github_glandais_gpx.$_$.v;
113
115
  var segmentsAsPaths = kotlin_io_github_glandais_gpx.$_$.t;
114
116
  var GpxPathKind_TRACK_getInstance = kotlin_io_github_glandais_gpx.$_$.b;
115
- var setOf = kotlin_kotlin.$_$.z3;
117
+ var setOf = kotlin_kotlin.$_$.h4;
116
118
  var GpxPathKind_ROUTE_getInstance = kotlin_io_github_glandais_gpx.$_$.a;
117
119
  var GpxWriter_instance = kotlin_io_github_glandais_gpx.$_$.g;
118
- var toList = kotlin_kotlin.$_$.i4;
119
- var Companion_getInstance = kotlin_kotlin.$_$.d1;
120
+ var toList = kotlin_kotlin.$_$.q4;
121
+ var Companion_getInstance = kotlin_kotlin.$_$.g1;
120
122
  var pathsToGpxDocument = kotlin_io_github_glandais_gpx.$_$.s;
121
123
  var toGpxDocument = kotlin_io_github_glandais_gpx.$_$.u;
122
124
  var GlobalScope_instance = kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.a;
123
- var promise = kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.l;
125
+ var promise = kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.m;
124
126
  var Companion_getInstance_0 = kotlin_io_github_glandais_gpx.$_$.n;
125
- var IllegalStateException_init_$Create$ = kotlin_kotlin.$_$.c2;
127
+ var IllegalStateException_init_$Create$ = kotlin_kotlin.$_$.h2;
126
128
  var CsvOptions = kotlin_io_github_glandais_gpx.$_$.w;
127
129
  var CsvWriter_instance = kotlin_io_github_glandais_gpx.$_$.h;
128
- var firstOrNull = kotlin_kotlin.$_$.q8;
129
- var Char = kotlin_kotlin.$_$.r9;
130
- var charSequenceLength = kotlin_kotlin.$_$.i6;
130
+ var firstOrNull = kotlin_kotlin.$_$.c9;
131
+ var Char = kotlin_kotlin.$_$.la;
132
+ var charSequenceLength = kotlin_kotlin.$_$.r6;
131
133
  var JsonOptions = kotlin_io_github_glandais_gpx.$_$.x;
132
134
  var JsonWriter_instance = kotlin_io_github_glandais_gpx.$_$.i;
133
135
  var toFitBytes = kotlin_io_github_glandais_fit.$_$.a;
134
- var Companion_getInstance_1 = kotlin_kotlin.$_$.c1;
135
- var DurationUnit_MILLISECONDS_getInstance = kotlin_kotlin.$_$.w;
136
- var toDuration = kotlin_kotlin.$_$.q9;
136
+ var Companion_getInstance_1 = kotlin_kotlin.$_$.f1;
137
+ var DurationUnit_MILLISECONDS_getInstance = kotlin_kotlin.$_$.z;
138
+ var toDuration = kotlin_kotlin.$_$.ka;
137
139
  var toFitBytes_0 = kotlin_io_github_glandais_fit.$_$.b;
138
- var toNumber = kotlin_kotlin.$_$.a6;
140
+ var toNumber = kotlin_kotlin.$_$.j6;
139
141
  var Companion_getInstance_2 = kotlin_io_github_glandais_gpx.$_$.f;
140
142
  var GpxWaypoint = kotlin_io_github_glandais_gpx.$_$.q;
141
143
  var Companion_instance_0 = kotlin_io_github_glandais_gpx.$_$.j;
142
- var ElevationProvider = kotlin_io_github_glandais_elevation.$_$.e;
143
- var ElevationProviderConfig = kotlin_io_github_glandais_elevation.$_$.d;
144
- var sorted = kotlin_kotlin.$_$.c4;
145
- var THROW_CCE = kotlin_kotlin.$_$.ca;
146
- var CoroutineScope = kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.j;
147
- var initMetadataForLambda = kotlin_kotlin.$_$.z6;
148
- var constructCallableReference = kotlin_kotlin.$_$.k6;
149
- var setOf_0 = kotlin_kotlin.$_$.a4;
144
+ var Companion_getInstance_3 = kotlin_io_github_glandais_elevation.$_$.d;
145
+ var provider = kotlin_io_github_glandais_elevation.$_$.h;
146
+ var sorted = kotlin_kotlin.$_$.k4;
147
+ var THROW_CCE = kotlin_kotlin.$_$.xa;
148
+ var CoroutineScope = kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.k;
149
+ var initMetadataForLambda = kotlin_kotlin.$_$.i7;
150
+ var constructCallableReference = kotlin_kotlin.$_$.t6;
151
+ var setOf_0 = kotlin_kotlin.$_$.i4;
150
152
  //endregion
151
153
  //region block: pre-declaration
152
154
  initMetadataForCompanion(Companion);
@@ -240,13 +242,13 @@
240
242
  this.DEFAULT_1 = new Bike();
241
243
  }
242
244
  var Companion_instance_1;
243
- function Companion_getInstance_3() {
245
+ function Companion_getInstance_4() {
244
246
  if (Companion_instance_1 == null)
245
247
  new Companion();
246
248
  return Companion_instance_1;
247
249
  }
248
250
  function Bike(crr, inertiaFront, inertiaRear, wheelRadiusM, efficiency, maxPedalingLeanAngleDeg) {
249
- Companion_getInstance_3();
251
+ Companion_getInstance_4();
250
252
  crr = crr === VOID ? 0.004 : crr;
251
253
  inertiaFront = inertiaFront === VOID ? 0.05 : inertiaFront;
252
254
  inertiaRear = inertiaRear === VOID ? 0.07 : inertiaRear;
@@ -303,8 +305,8 @@
303
305
  return true;
304
306
  };
305
307
  function Course(path, cyclist, bike) {
306
- cyclist = cyclist === VOID ? Companion_getInstance_5().DEFAULT_1 : cyclist;
307
- bike = bike === VOID ? Companion_getInstance_3().DEFAULT_1 : bike;
308
+ cyclist = cyclist === VOID ? Companion_getInstance_6().DEFAULT_1 : cyclist;
309
+ bike = bike === VOID ? Companion_getInstance_4().DEFAULT_1 : bike;
308
310
  this.path_1 = path;
309
311
  this.cyclist_1 = cyclist;
310
312
  this.bike_1 = bike;
@@ -345,17 +347,17 @@
345
347
  this.DEFAULT_CYCLIST_POWER_PROVIDER_1 = new PowerProviderConstant(280.0);
346
348
  }
347
349
  var Companion_instance_2;
348
- function Companion_getInstance_4() {
350
+ function Companion_getInstance_5() {
349
351
  if (Companion_instance_2 == null)
350
352
  new Companion_0();
351
353
  return Companion_instance_2;
352
354
  }
353
355
  function CoursePhysics(course, rhoProvider, aeroProvider, windProvider, cyclistPowerProvider) {
354
- Companion_getInstance_4();
356
+ Companion_getInstance_5();
355
357
  rhoProvider = rhoProvider === VOID ? RhoProviderDefault_instance : rhoProvider;
356
358
  aeroProvider = aeroProvider === VOID ? AeroProviderConstant_instance : aeroProvider;
357
359
  windProvider = windProvider === VOID ? WindProviderNone_instance : windProvider;
358
- cyclistPowerProvider = cyclistPowerProvider === VOID ? Companion_getInstance_4().DEFAULT_CYCLIST_POWER_PROVIDER_1 : cyclistPowerProvider;
360
+ cyclistPowerProvider = cyclistPowerProvider === VOID ? Companion_getInstance_5().DEFAULT_CYCLIST_POWER_PROVIDER_1 : cyclistPowerProvider;
359
361
  this.course_1 = course;
360
362
  this.rhoProvider_1 = rhoProvider;
361
363
  this.aeroProvider_1 = aeroProvider;
@@ -415,13 +417,13 @@
415
417
  this.DEFAULT_1 = new Cyclist();
416
418
  }
417
419
  var Companion_instance_3;
418
- function Companion_getInstance_5() {
420
+ function Companion_getInstance_6() {
419
421
  if (Companion_instance_3 == null)
420
422
  new Companion_1();
421
423
  return Companion_instance_3;
422
424
  }
423
425
  function Cyclist(massKg, maxBrakeG, cd, frontalAreaM2, maxLeanAngleDeg, maxSpeedKmH) {
424
- Companion_getInstance_5();
426
+ Companion_getInstance_6();
425
427
  massKg = massKg === VOID ? 80.0 : massKg;
426
428
  maxBrakeG = maxBrakeG === VOID ? 0.4 : maxBrakeG;
427
429
  cd = cd === VOID ? 0.7 : cd;
@@ -602,13 +604,13 @@
602
604
  this.DEFAULT_1 = new EnhanceOptions();
603
605
  }
604
606
  var Companion_instance_4;
605
- function Companion_getInstance_6() {
607
+ function Companion_getInstance_7() {
606
608
  if (Companion_instance_4 == null)
607
609
  new Companion_2();
608
610
  return Companion_instance_4;
609
611
  }
610
612
  function EnhanceOptions(fixElevation, computeMaxSpeeds, virtualizeTrack, computeOnePointPerSecond, simplifyPath, wPrimeBalance, curvature, racingLine, elevationGain, elevationSmoothWindowM) {
611
- Companion_getInstance_6();
613
+ Companion_getInstance_7();
612
614
  fixElevation = fixElevation === VOID ? true : fixElevation;
613
615
  computeMaxSpeeds = computeMaxSpeeds === VOID ? true : computeMaxSpeeds;
614
616
  virtualizeTrack = virtualizeTrack === VOID ? true : virtualizeTrack;
@@ -865,7 +867,7 @@
865
867
  return destination;
866
868
  };
867
869
  var Companion_instance_5;
868
- function Companion_getInstance_7() {
870
+ function Companion_getInstance_8() {
869
871
  static_init();
870
872
  return Companion_instance_5;
871
873
  }
@@ -1036,13 +1038,13 @@
1036
1038
  this.DEFAULT_1 = new ClimbOptions();
1037
1039
  }
1038
1040
  var Companion_instance_6;
1039
- function Companion_getInstance_8() {
1041
+ function Companion_getInstance_9() {
1040
1042
  if (Companion_instance_6 == null)
1041
1043
  new Companion_4();
1042
1044
  return Companion_instance_6;
1043
1045
  }
1044
1046
  function ClimbOptions(minMinClimbElevationM, maxMinClimbElevationM, minClimbElevationRatio, minGradePercent, maxDiffRealGradeRatio, booster, maxAnalysisPoints) {
1045
- Companion_getInstance_8();
1047
+ Companion_getInstance_9();
1046
1048
  minMinClimbElevationM = minMinClimbElevationM === VOID ? 10.0 : minMinClimbElevationM;
1047
1049
  maxMinClimbElevationM = maxMinClimbElevationM === VOID ? 35.0 : maxMinClimbElevationM;
1048
1050
  minClimbElevationRatio = minClimbElevationRatio === VOID ? 100.0 : minClimbElevationRatio;
@@ -1144,7 +1146,7 @@
1144
1146
  return new Profile(tmp_6, tmp_10, indices);
1145
1147
  };
1146
1148
  var Companion_instance_7;
1147
- function Companion_getInstance_9() {
1149
+ function Companion_getInstance_10() {
1148
1150
  return Companion_instance_7;
1149
1151
  }
1150
1152
  function Profile(distance, elevation, sourceIndex) {
@@ -1443,7 +1445,7 @@
1443
1445
  return destination_0;
1444
1446
  };
1445
1447
  protoOf(ClimbDetector).detect$default_6ml3ny_k$ = function (path, options, $super) {
1446
- options = options === VOID ? Companion_getInstance_8().DEFAULT_1 : options;
1448
+ options = options === VOID ? Companion_getInstance_9().DEFAULT_1 : options;
1447
1449
  return $super === VOID ? this.detect_llooq2_k$(path, options) : $super.detect_llooq2_k$.call(this, path, options);
1448
1450
  };
1449
1451
  var ClimbDetector_instance;
@@ -1494,7 +1496,7 @@
1494
1496
  $l$loop: do {
1495
1497
  var i = inductionVariable;
1496
1498
  inductionVariable = inductionVariable + 1 | 0;
1497
- var dx = (_this__u8e3s4.longitude_a9xl_k$(i) - lon0) * cosLat0;
1499
+ var dx = LocalFrame_instance.unwrap_i6c8al_k$(_this__u8e3s4.longitude_a9xl_k$(i) - lon0) * cosLat0;
1498
1500
  var dy = _this__u8e3s4.latitude_gb4iok_k$(i) - lat0;
1499
1501
  // Inline function 'kotlin.math.hypot' call
1500
1502
  var length = hypot(dx, dy);
@@ -1603,7 +1605,7 @@
1603
1605
  this.MAX_MULTIPLIER_1 = 3.0;
1604
1606
  }
1605
1607
  var Companion_instance_8;
1606
- function Companion_getInstance_10() {
1608
+ function Companion_getInstance_11() {
1607
1609
  return Companion_instance_8;
1608
1610
  }
1609
1611
  function CyclistPowerProviderBase(useHarmonics, random) {
@@ -1702,7 +1704,7 @@
1702
1704
  return tmp$ret$0;
1703
1705
  };
1704
1706
  var Companion_instance_9;
1705
- function Companion_getInstance_11() {
1707
+ function Companion_getInstance_12() {
1706
1708
  return Companion_instance_9;
1707
1709
  }
1708
1710
  function values_0() {
@@ -2137,7 +2139,7 @@
2137
2139
  this.DEFAULT_TAPER_START_FRACTION_1 = 0.5;
2138
2140
  }
2139
2141
  var Companion_instance_10;
2140
- function Companion_getInstance_12() {
2142
+ function Companion_getInstance_13() {
2141
2143
  return Companion_instance_10;
2142
2144
  }
2143
2145
  function PowerProviderCriticalPower(powerW, criticalPowerW, wPrimeJ, taperStartFraction, useHarmonics, random) {
@@ -2225,7 +2227,7 @@
2225
2227
  this.DEFAULT_MAX_DECLINE_1 = 0.2;
2226
2228
  }
2227
2229
  var Companion_instance_11;
2228
- function Companion_getInstance_13() {
2230
+ function Companion_getInstance_14() {
2229
2231
  return Companion_instance_11;
2230
2232
  }
2231
2233
  function PowerProviderDurability(powerW, criticalPowerW, declinePerKjPerKg, maxDecline, useHarmonics, random) {
@@ -2322,6 +2324,7 @@
2322
2324
  this.lastIndex_1 = -1;
2323
2325
  this.lastElapsedS_1 = 0.0;
2324
2326
  this.lastPowerW_1 = 0.0;
2327
+ this.lastLimitedW_1 = 0.0;
2325
2328
  }
2326
2329
  protoOf(PowerProviderSlewLimited).powerAt_ejucaq_k$ = function (course, path, pointIndex) {
2327
2330
  var target = this.delegate_1.powerAt_ejucaq_k$(course, path, pointIndex);
@@ -2329,8 +2332,8 @@
2329
2332
  this.reset_5u6xz3_k$();
2330
2333
  }
2331
2334
  if (pointIndex === this.lastIndex_1) {
2332
- this.delegate_1.onDelivered_drn2rh_k$(pointIndex, this.lastPowerW_1);
2333
- return this.lastPowerW_1;
2335
+ this.delegate_1.onDelivered_drn2rh_k$(pointIndex, this.lastLimitedW_1);
2336
+ return this.lastLimitedW_1;
2334
2337
  }
2335
2338
  var elapsedS = path.elapsed_7307rw_k$(pointIndex);
2336
2339
  var dtS = elapsedS - this.lastElapsedS_1;
@@ -2354,16 +2357,20 @@
2354
2357
  this.lastElapsedS_1 = elapsedS;
2355
2358
  this.lastIndex_1 = pointIndex;
2356
2359
  this.lastPowerW_1 = limited;
2360
+ this.lastLimitedW_1 = limited;
2357
2361
  this.delegate_1.onDelivered_drn2rh_k$(pointIndex, limited);
2358
2362
  return limited;
2359
2363
  };
2360
2364
  protoOf(PowerProviderSlewLimited).onDelivered_drn2rh_k$ = function (pointIndex, powerW) {
2361
- return this.delegate_1.onDelivered_drn2rh_k$(pointIndex, powerW);
2365
+ if (pointIndex === this.lastIndex_1 && isFinite(powerW))
2366
+ this.lastPowerW_1 = powerW;
2367
+ this.delegate_1.onDelivered_drn2rh_k$(pointIndex, powerW);
2362
2368
  };
2363
2369
  protoOf(PowerProviderSlewLimited).reset_5u6xz3_k$ = function () {
2364
2370
  this.lastIndex_1 = -1;
2365
2371
  this.lastElapsedS_1 = 0.0;
2366
2372
  this.lastPowerW_1 = 0.0;
2373
+ this.lastLimitedW_1 = 0.0;
2367
2374
  };
2368
2375
  function Companion_10() {
2369
2376
  this.DEFAULT_GRADIENT_GAIN_1 = 3.0;
@@ -2374,7 +2381,7 @@
2374
2381
  this.DEFAULT_ENERGY_BUDGET_SECONDS_1 = 600.0;
2375
2382
  }
2376
2383
  var Companion_instance_12;
2377
- function Companion_getInstance_14() {
2384
+ function Companion_getInstance_15() {
2378
2385
  return Companion_instance_12;
2379
2386
  }
2380
2387
  function PowerProviderTerrainPacing(delegate, gradientGain, headwindGainPerMS, minMultiplier, maxMultiplier, rampDistanceM, energyBudgetSeconds) {
@@ -2646,13 +2653,13 @@
2646
2653
  this.NONE_1 = new Wind(0.0, 0.0);
2647
2654
  }
2648
2655
  var Companion_instance_13;
2649
- function Companion_getInstance_15() {
2656
+ function Companion_getInstance_16() {
2650
2657
  if (Companion_instance_13 == null)
2651
2658
  new Companion_11();
2652
2659
  return Companion_instance_13;
2653
2660
  }
2654
2661
  function Wind(speedMS, directionRad) {
2655
- Companion_getInstance_15();
2662
+ Companion_getInstance_16();
2656
2663
  this.speedMS_1 = speedMS;
2657
2664
  this.directionRad_1 = directionRad;
2658
2665
  }
@@ -2678,7 +2685,7 @@
2678
2685
  function WindProviderNone() {
2679
2686
  }
2680
2687
  protoOf(WindProviderNone).wind_umf2tf_k$ = function (course, path, pointIndex) {
2681
- return Companion_getInstance_15().NONE_1;
2688
+ return Companion_getInstance_16().NONE_1;
2682
2689
  };
2683
2690
  var WindProviderNone_instance;
2684
2691
  function WindProviderNone_getInstance() {
@@ -3426,31 +3433,38 @@
3426
3433
  var previous = NaN;
3427
3434
  var inductionVariable = 0;
3428
3435
  if (inductionVariable < n)
3429
- do {
3436
+ $l$loop: do {
3430
3437
  var i = inductionVariable;
3431
3438
  inductionVariable = inductionVariable + 1 | 0;
3432
3439
  var a = i > 0 ? i - 1 | 0 : 0;
3433
3440
  var b = i < (n - 1 | 0) ? i + 1 | 0 : n - 1 | 0;
3434
3441
  var dx = frame.x_1[b] - frame.x_1[a];
3435
3442
  var dy = frame.y_1[b] - frame.y_1[a];
3436
- var tmp;
3437
3443
  if (dx === 0.0 && dy === 0.0) {
3438
- tmp = isNaN_0(previous) ? 0.0 : previous;
3439
- } else {
3440
- // Inline function 'kotlin.math.atan2' call
3441
- tmp = Math.atan2(dy, dx);
3444
+ theta[i] = previous;
3445
+ continue $l$loop;
3442
3446
  }
3443
- var raw = tmp;
3444
- var tmp_0;
3445
- if (i === 0 || isNaN_0(previous)) {
3446
- tmp_0 = raw;
3447
+ // Inline function 'kotlin.math.atan2' call
3448
+ var raw = Math.atan2(dy, dx);
3449
+ if (isNaN_0(previous)) {
3450
+ theta[i] = raw;
3451
+ var inductionVariable_0 = 0;
3452
+ if (inductionVariable_0 < i)
3453
+ do {
3454
+ var j = inductionVariable_0;
3455
+ inductionVariable_0 = inductionVariable_0 + 1 | 0;
3456
+ theta[j] = raw;
3457
+ }
3458
+ while (inductionVariable_0 < i);
3447
3459
  } else {
3448
- tmp_0 = previous + LocalFrame_instance.unwrap_i6c8al_k$(raw - previous);
3460
+ theta[i] = previous + LocalFrame_instance.unwrap_i6c8al_k$(raw - previous);
3449
3461
  }
3450
- theta[i] = tmp_0;
3451
3462
  previous = theta[i];
3452
3463
  }
3453
3464
  while (inductionVariable < n);
3465
+ if (isNaN_0(previous)) {
3466
+ fill(theta, 0.0);
3467
+ }
3454
3468
  };
3455
3469
  protoOf(CurvatureEstimator).computeCurvature_emiphc_k$ = function (frame, windowsM, sigmaThetaRad, curvatureSmoothM) {
3456
3470
  var n = frame.get_size_woubt6_k$();
@@ -3505,15 +3519,7 @@
3505
3519
  }
3506
3520
  }
3507
3521
  while (0 <= inductionVariable_1);
3508
- var tmp;
3509
- if (!isNaN_0(chosen)) {
3510
- tmp = chosen;
3511
- } else if (!isNaN_0(widest)) {
3512
- tmp = widest;
3513
- } else {
3514
- tmp = 0.0;
3515
- }
3516
- raw[i] = tmp;
3522
+ raw[i] = !isNaN_0(chosen) ? chosen : widest;
3517
3523
  }
3518
3524
  while (inductionVariable < n);
3519
3525
  var smoothed = LocalFrame_instance.smooth_kce7pb_k$(raw, frame.s_1, curvatureSmoothM);
@@ -3521,10 +3527,10 @@
3521
3527
  var endIndex = smoothed.length;
3522
3528
  // Inline function 'kotlin.js.unsafeCast' call
3523
3529
  // Inline function 'kotlin.js.asDynamic' call
3524
- var tmp_0 = smoothed;
3530
+ var tmp = smoothed;
3525
3531
  // Inline function 'kotlin.js.unsafeCast' call
3526
3532
  // Inline function 'kotlin.js.asDynamic' call
3527
- arrayCopy(tmp_0, kappa, 0, 0, endIndex);
3533
+ arrayCopy(tmp, kappa, 0, 0, endIndex);
3528
3534
  };
3529
3535
  protoOf(CurvatureEstimator).radiusAt_umgvjz_k$ = function (kappa) {
3530
3536
  var tmp;
@@ -3587,7 +3593,7 @@
3587
3593
  };
3588
3594
  protoOf(LocalFrame).unproject_ym27oh_k$ = function (frame, x, y) {
3589
3595
  var lat = frame.lat0__1 + y / 6371000.0;
3590
- var lon = frame.lon0__1 + x / (6371000.0 * frame.k_1);
3596
+ var lon = this.unwrap_i6c8al_k$(frame.lon0__1 + x / (6371000.0 * frame.k_1));
3591
3597
  // Inline function 'kotlin.doubleArrayOf' call
3592
3598
  return new Float64Array([lat, lon]);
3593
3599
  };
@@ -3609,7 +3615,8 @@
3609
3615
  while (inductionVariable < last);
3610
3616
  };
3611
3617
  protoOf(LocalFrame).unwrap_i6c8al_k$ = function (a) {
3612
- return a - 2.0 * 3.141592653589793 * round(a / (2.0 * 3.141592653589793));
3618
+ var r = a - 2.0 * 3.141592653589793 * round(a / (2.0 * 3.141592653589793));
3619
+ return r <= -3.141592653589793 ? r + 2.0 * 3.141592653589793 : r;
3613
3620
  };
3614
3621
  protoOf(LocalFrame).smooth_kce7pb_k$ = function (v, s, windowM) {
3615
3622
  var n = v.length;
@@ -3646,13 +3653,13 @@
3646
3653
  // Inline function 'kotlin.math.abs' call
3647
3654
  var x = s[j] - c;
3648
3655
  var w = 1.0 - Math.abs(x) / windowM;
3649
- if (w <= 0.0)
3656
+ if (w <= 0.0 || isNaN_0(v[j]))
3650
3657
  continue $l$loop;
3651
3658
  weightSum = weightSum + w;
3652
3659
  valueSum = valueSum + v[j] * w;
3653
3660
  }
3654
3661
  while (!(j === last));
3655
- out[i] = weightSum > 0.0 ? valueSum / weightSum : v[i];
3662
+ out[i] = isNaN_0(v[i]) || weightSum <= 0.0 ? v[i] : valueSum / weightSum;
3656
3663
  }
3657
3664
  while (inductionVariable < n);
3658
3665
  return out;
@@ -3663,15 +3670,16 @@
3663
3670
  }
3664
3671
  function Companion_12() {
3665
3672
  }
3666
- protoOf(Companion_12).assemble_miimn7_k$ = function (frame, center, rho, steeringLengthM, centeringLengthM) {
3673
+ protoOf(Companion_12).assemble_7bjwpt_k$ = function (frame, center, rho, steeringLengthM, centeringLengthM, fixed) {
3667
3674
  var n = frame.get_size_woubt6_k$();
3668
3675
  var h0 = new Float64Array(n);
3669
3676
  var h1 = new Float64Array(n);
3670
3677
  var h2 = new Float64Array(n);
3671
3678
  var linear = new Float64Array(n);
3672
- var constant = 0.0;
3673
3679
  var lambdaR = 1.0 / (steeringLengthM * steeringLengthM);
3674
3680
  var lambdaC = 1.0 / (centeringLengthM * centeringLengthM * centeringLengthM * centeringLengthM);
3681
+ var meanSpacing = n > 1 ? (frame.s_1[n - 1 | 0] - frame.s_1[0]) / (n - 1 | 0) : 0.0;
3682
+ var tie = meanSpacing > 0.0 ? lambdaR / meanSpacing : lambdaR;
3675
3683
  var a = new Float64Array(3);
3676
3684
  var b = new Float64Array(3);
3677
3685
  var inductionVariable = 0;
@@ -3684,7 +3692,13 @@
3684
3692
  var weight = 0.5 * (hMinus + hPlus);
3685
3693
  h0[i] = h0[i] + 2.0 * weight * lambdaC;
3686
3694
  linear[i] = linear[i] - 2.0 * weight * lambdaC * center[i];
3687
- constant = constant + weight * lambdaC * center[i] * center[i];
3695
+ if (weight <= 0.0 && i >= 1 && !fixed[i]) {
3696
+ h0[i] = h0[i] + 2.0 * tie;
3697
+ var _index_0__fvwizt = i - 1 | 0;
3698
+ h0[_index_0__fvwizt] = h0[_index_0__fvwizt] + 2.0 * tie;
3699
+ var _index_0__fvwizt_0 = i - 1 | 0;
3700
+ h1[_index_0__fvwizt_0] = h1[_index_0__fvwizt_0] - 2.0 * tie;
3701
+ }
3688
3702
  if (i < 1 || (i + 1 | 0) >= n)
3689
3703
  continue $l$loop_0;
3690
3704
  var denom = hPlus * hMinus * (hPlus + hMinus);
@@ -3728,37 +3742,44 @@
3728
3742
  while (inductionVariable_1 <= 2);
3729
3743
  }
3730
3744
  while (inductionVariable_0 <= 2);
3731
- constant = constant + wRho * kappaI * kappaI;
3732
3745
  }
3733
3746
  while (inductionVariable < n);
3734
- return new OffsetEnergy(h0, h1, h2, linear, constant);
3747
+ return new OffsetEnergy(h0, h1, h2, linear);
3735
3748
  };
3736
3749
  var Companion_instance_14;
3737
- function Companion_getInstance_16() {
3750
+ function Companion_getInstance_17() {
3738
3751
  return Companion_instance_14;
3739
3752
  }
3740
- function OffsetEnergy(h0, h1, h2, linear, constant) {
3753
+ function OffsetEnergy(h0, h1, h2, linear) {
3741
3754
  this.h0__1 = h0;
3742
3755
  this.h1__1 = h1;
3743
3756
  this.h2__1 = h2;
3744
3757
  this.linear_1 = linear;
3745
- this.constant_1 = constant;
3746
3758
  }
3747
3759
  protoOf(OffsetEnergy).get_size_woubt6_k$ = function () {
3748
3760
  return this.h0__1.length;
3749
3761
  };
3750
- protoOf(OffsetEnergy).value_6wg803_k$ = function (n, scratch) {
3751
- BandedLdl_instance.multiply_dwj15t_k$(this.h0__1, this.h1__1, this.h2__1, n, scratch);
3752
- var acc = this.constant_1;
3762
+ protoOf(OffsetEnergy).change_z3fx8j_k$ = function (from, to, gradient, delta, scratch) {
3753
3763
  var inductionVariable = 0;
3754
- var last = n.length - 1 | 0;
3764
+ var last = delta.length - 1 | 0;
3755
3765
  if (inductionVariable <= last)
3756
3766
  do {
3757
3767
  var i = inductionVariable;
3758
3768
  inductionVariable = inductionVariable + 1 | 0;
3759
- acc = acc + (0.5 * scratch[i] * n[i] + this.linear_1[i] * n[i]);
3769
+ delta[i] = to[i] - from[i];
3760
3770
  }
3761
3771
  while (inductionVariable <= last);
3772
+ BandedLdl_instance.multiply_dwj15t_k$(this.h0__1, this.h1__1, this.h2__1, delta, scratch);
3773
+ var acc = 0.0;
3774
+ var inductionVariable_0 = 0;
3775
+ var last_0 = delta.length - 1 | 0;
3776
+ if (inductionVariable_0 <= last_0)
3777
+ do {
3778
+ var i_0 = inductionVariable_0;
3779
+ inductionVariable_0 = inductionVariable_0 + 1 | 0;
3780
+ acc = acc + (gradient[i_0] + 0.5 * scratch[i_0]) * delta[i_0];
3781
+ }
3782
+ while (inductionVariable_0 <= last_0);
3762
3783
  return acc;
3763
3784
  };
3764
3785
  protoOf(OffsetEnergy).gradient_zecmby_k$ = function (n, out) {
@@ -3781,7 +3802,7 @@
3781
3802
  this.activeConstraints_1 = activeConstraints;
3782
3803
  }
3783
3804
  function isFree($this, x, lo, hi, g, epsilon) {
3784
- if (hi - lo <= 2.0 * epsilon)
3805
+ if ($this.isFixed_s6zw2k_k$(lo, hi, epsilon))
3785
3806
  return false;
3786
3807
  if (x <= lo + epsilon && g > 0.0)
3787
3808
  return false;
@@ -3863,7 +3884,10 @@
3863
3884
  var f1 = new Float64Array(n);
3864
3885
  var f2 = new Float64Array(n);
3865
3886
  var rhs = new Float64Array(n);
3866
- $l$loop_3: while (iterations < maxIterations) {
3887
+ var solveIndex = new Int32Array(n);
3888
+ var held = booleanArray(n);
3889
+ var delta = new Float64Array(n);
3890
+ $l$loop_5: while (iterations < maxIterations) {
3867
3891
  energy.gradient_zecmby_k$(x, g);
3868
3892
  var freeCount = 0;
3869
3893
  var residual = 0.0;
@@ -3889,81 +3913,124 @@
3889
3913
  relativeResidual = residual / referenceGradient;
3890
3914
  if (freeCount === 0 || relativeResidual <= gradientTolerance) {
3891
3915
  converged = true;
3892
- break $l$loop_3;
3893
- }
3894
- buildFreeSystem(this, energy, freeIndex, freeCount, f0, f1, f2);
3895
- var fa0 = copyOf(f0, freeCount);
3896
- var fa1 = copyOf(f1, freeCount);
3897
- var fa2 = copyOf(f2, freeCount);
3898
- if (!BandedLdl_instance.factor_n459o6_k$(fa0, fa1, fa2)) {
3899
- break $l$loop_3;
3916
+ break $l$loop_5;
3900
3917
  }
3901
3918
  var inductionVariable_1 = 0;
3902
- var last = freeCount;
3903
- if (inductionVariable_1 < last)
3919
+ if (inductionVariable_1 < n)
3904
3920
  do {
3905
- var p = inductionVariable_1;
3921
+ var i_1 = inductionVariable_1;
3906
3922
  inductionVariable_1 = inductionVariable_1 + 1 | 0;
3907
- rhs[p] = -g[freeIndex[p]];
3908
- }
3909
- while (inductionVariable_1 < last);
3910
- BandedLdl_instance.solveInPlace_jrw92v_k$(fa0, fa1, fa2, rhs);
3911
- var inductionVariable_2 = 0;
3912
- if (inductionVariable_2 < n)
3913
- do {
3914
- var i_1 = inductionVariable_2;
3915
- inductionVariable_2 = inductionVariable_2 + 1 | 0;
3916
- direction[i_1] = 0.0;
3917
- }
3918
- while (inductionVariable_2 < n);
3919
- var inductionVariable_3 = 0;
3920
- var last_0 = freeCount;
3921
- if (inductionVariable_3 < last_0)
3922
- do {
3923
- var p_0 = inductionVariable_3;
3924
- inductionVariable_3 = inductionVariable_3 + 1 | 0;
3925
- direction[freeIndex[p_0]] = rhs[p_0];
3926
- }
3927
- while (inductionVariable_3 < last_0);
3928
- var directionalDerivative = 0.0;
3929
- var inductionVariable_4 = 0;
3930
- var last_1 = freeCount;
3931
- if (inductionVariable_4 < last_1)
3932
- do {
3933
- var p_1 = inductionVariable_4;
3934
- inductionVariable_4 = inductionVariable_4 + 1 | 0;
3935
- var i_2 = freeIndex[p_1];
3936
- directionalDerivative = directionalDerivative + g[i_2] * direction[i_2];
3923
+ held[i_1] = false;
3937
3924
  }
3938
- while (inductionVariable_4 < last_1);
3939
- if (directionalDerivative >= 0.0)
3940
- break $l$loop_3;
3941
- var current = energy.value_6wg803_k$(x, scratch);
3942
- var step = 1.0;
3925
+ while (inductionVariable_1 < n);
3943
3926
  var accepted = false;
3944
- var inductionVariable_5 = 0;
3945
- if (inductionVariable_5 < 20)
3946
- $l$loop_2: do {
3947
- var attempt = inductionVariable_5;
3948
- inductionVariable_5 = inductionVariable_5 + 1 | 0;
3949
- var inductionVariable_6 = 0;
3950
- if (inductionVariable_6 < n)
3951
- do {
3952
- var i_3 = inductionVariable_6;
3953
- inductionVariable_6 = inductionVariable_6 + 1 | 0;
3954
- candidate[i_3] = coerceIn(x[i_3] + step * direction[i_3], lo[i_3], hi[i_3]);
3927
+ $l$loop_4: while (true) {
3928
+ var solveCount = 0;
3929
+ var inductionVariable_2 = 0;
3930
+ var last = freeCount;
3931
+ if (inductionVariable_2 < last)
3932
+ do {
3933
+ var p = inductionVariable_2;
3934
+ inductionVariable_2 = inductionVariable_2 + 1 | 0;
3935
+ if (!held[freeIndex[p]]) {
3936
+ var _unary__edvuaz_0 = solveCount;
3937
+ solveCount = _unary__edvuaz_0 + 1 | 0;
3938
+ solveIndex[_unary__edvuaz_0] = freeIndex[p];
3955
3939
  }
3956
- while (inductionVariable_6 < n);
3957
- var trial = energy.value_6wg803_k$(candidate, scratch);
3958
- if (trial <= current + 1.0E-4 * step * directionalDerivative) {
3959
- accepted = true;
3960
- break $l$loop_2;
3961
3940
  }
3962
- step = step / 2.0;
3941
+ while (inductionVariable_2 < last);
3942
+ buildFreeSystem(this, energy, solveIndex, solveCount, f0, f1, f2);
3943
+ var fa0 = copyOf(f0, solveCount);
3944
+ var fa1 = copyOf(f1, solveCount);
3945
+ var fa2 = copyOf(f2, solveCount);
3946
+ if (!BandedLdl_instance.factor_n459o6_k$(fa0, fa1, fa2)) {
3947
+ break $l$loop_4;
3963
3948
  }
3964
- while (inductionVariable_5 < 20);
3949
+ var inductionVariable_3 = 0;
3950
+ var last_0 = solveCount;
3951
+ if (inductionVariable_3 < last_0)
3952
+ do {
3953
+ var p_0 = inductionVariable_3;
3954
+ inductionVariable_3 = inductionVariable_3 + 1 | 0;
3955
+ rhs[p_0] = -g[solveIndex[p_0]];
3956
+ }
3957
+ while (inductionVariable_3 < last_0);
3958
+ BandedLdl_instance.solveInPlace_jrw92v_k$(fa0, fa1, fa2, rhs);
3959
+ var inductionVariable_4 = 0;
3960
+ if (inductionVariable_4 < n)
3961
+ do {
3962
+ var i_2 = inductionVariable_4;
3963
+ inductionVariable_4 = inductionVariable_4 + 1 | 0;
3964
+ direction[i_2] = 0.0;
3965
+ }
3966
+ while (inductionVariable_4 < n);
3967
+ var inductionVariable_5 = 0;
3968
+ var last_1 = solveCount;
3969
+ if (inductionVariable_5 < last_1)
3970
+ do {
3971
+ var p_1 = inductionVariable_5;
3972
+ inductionVariable_5 = inductionVariable_5 + 1 | 0;
3973
+ direction[solveIndex[p_1]] = rhs[p_1];
3974
+ }
3975
+ while (inductionVariable_5 < last_1);
3976
+ var directionalDerivative = 0.0;
3977
+ var inductionVariable_6 = 0;
3978
+ var last_2 = solveCount;
3979
+ if (inductionVariable_6 < last_2)
3980
+ do {
3981
+ var p_2 = inductionVariable_6;
3982
+ inductionVariable_6 = inductionVariable_6 + 1 | 0;
3983
+ var i_3 = solveIndex[p_2];
3984
+ directionalDerivative = directionalDerivative + g[i_3] * direction[i_3];
3985
+ }
3986
+ while (inductionVariable_6 < last_2);
3987
+ if (directionalDerivative >= 0.0)
3988
+ break $l$loop_4;
3989
+ var step = 1.0;
3990
+ var lastStep = step;
3991
+ var inductionVariable_7 = 0;
3992
+ if (inductionVariable_7 < 20)
3993
+ $l$loop_2: do {
3994
+ var attempt = inductionVariable_7;
3995
+ inductionVariable_7 = inductionVariable_7 + 1 | 0;
3996
+ var inductionVariable_8 = 0;
3997
+ if (inductionVariable_8 < n)
3998
+ do {
3999
+ var i_4 = inductionVariable_8;
4000
+ inductionVariable_8 = inductionVariable_8 + 1 | 0;
4001
+ candidate[i_4] = coerceIn(x[i_4] + step * direction[i_4], lo[i_4], hi[i_4]);
4002
+ }
4003
+ while (inductionVariable_8 < n);
4004
+ if (energy.change_z3fx8j_k$(x, candidate, g, delta, scratch) <= 1.0E-4 * step * directionalDerivative) {
4005
+ accepted = true;
4006
+ break $l$loop_2;
4007
+ }
4008
+ lastStep = step;
4009
+ step = step / 2.0;
4010
+ }
4011
+ while (inductionVariable_7 < 20);
4012
+ if (accepted)
4013
+ break $l$loop_4;
4014
+ var newlyHeld = 0;
4015
+ var inductionVariable_9 = 0;
4016
+ var last_3 = solveCount;
4017
+ if (inductionVariable_9 < last_3)
4018
+ do {
4019
+ var p_3 = inductionVariable_9;
4020
+ inductionVariable_9 = inductionVariable_9 + 1 | 0;
4021
+ var i_5 = solveIndex[p_3];
4022
+ var target = x[i_5] + lastStep * direction[i_5];
4023
+ if (target < lo[i_5] || target > hi[i_5]) {
4024
+ held[i_5] = true;
4025
+ newlyHeld = newlyHeld + 1 | 0;
4026
+ }
4027
+ }
4028
+ while (inductionVariable_9 < last_3);
4029
+ if (newlyHeld === 0)
4030
+ break $l$loop_4;
4031
+ }
3965
4032
  if (!accepted)
3966
- break $l$loop_3;
4033
+ break $l$loop_5;
3967
4034
  // Inline function 'kotlin.collections.copyInto' call
3968
4035
  var endIndex = candidate.length;
3969
4036
  // Inline function 'kotlin.js.unsafeCast' call
@@ -3975,18 +4042,21 @@
3975
4042
  iterations = iterations + 1 | 0;
3976
4043
  }
3977
4044
  var active = 0;
3978
- var inductionVariable_7 = 0;
3979
- if (inductionVariable_7 < n)
4045
+ var inductionVariable_10 = 0;
4046
+ if (inductionVariable_10 < n)
3980
4047
  do {
3981
- var i_4 = inductionVariable_7;
3982
- inductionVariable_7 = inductionVariable_7 + 1 | 0;
3983
- if (x[i_4] <= lo[i_4] + boundEpsilonM || x[i_4] >= hi[i_4] - boundEpsilonM) {
4048
+ var i_6 = inductionVariable_10;
4049
+ inductionVariable_10 = inductionVariable_10 + 1 | 0;
4050
+ if (x[i_6] <= lo[i_6] + boundEpsilonM || x[i_6] >= hi[i_6] - boundEpsilonM) {
3984
4051
  active = active + 1 | 0;
3985
4052
  }
3986
4053
  }
3987
- while (inductionVariable_7 < n);
4054
+ while (inductionVariable_10 < n);
3988
4055
  return new QpResult(x, iterations, relativeResidual, converged, active);
3989
4056
  };
4057
+ protoOf(OffsetQp).isFixed_s6zw2k_k$ = function (lo, hi, epsilon) {
4058
+ return hi - lo <= 2.0 * epsilon;
4059
+ };
3990
4060
  var OffsetQp_instance;
3991
4061
  function OffsetQp_getInstance() {
3992
4062
  return OffsetQp_instance;
@@ -3996,13 +4066,13 @@
3996
4066
  this.DEFAULT_1 = new CurvatureOptions();
3997
4067
  }
3998
4068
  var Companion_instance_15;
3999
- function Companion_getInstance_17() {
4069
+ function Companion_getInstance_18() {
4000
4070
  if (Companion_instance_15 == null)
4001
4071
  new Companion_13();
4002
4072
  return Companion_instance_15;
4003
4073
  }
4004
4074
  function CurvatureOptions(enabled, geometrySmoothWindowM, curvatureWindowsM, headingNoiseRad, curvatureSmoothWindowM) {
4005
- Companion_getInstance_17();
4075
+ Companion_getInstance_18();
4006
4076
  enabled = enabled === VOID ? true : enabled;
4007
4077
  geometrySmoothWindowM = geometrySmoothWindowM === VOID ? 3.0 : geometrySmoothWindowM;
4008
4078
  curvatureWindowsM = curvatureWindowsM === VOID ? listOf_0([3.0, 6.0, 12.0, 25.0]) : curvatureWindowsM;
@@ -4217,6 +4287,17 @@
4217
4287
  var frame = tmp;
4218
4288
  CurvatureEstimator_instance.computeHeadings_ev7p13_k$(frame);
4219
4289
  CurvatureEstimator_instance.computeCurvature_emiphc_k$(frame, toDoubleArray(options.curvature_1.curvatureWindowsM_1), options.curvature_1.headingNoiseRad_1, options.curvature_1.curvatureSmoothWindowM_1);
4290
+ var inductionVariable = 0;
4291
+ var last = frame.get_size_woubt6_k$();
4292
+ if (inductionVariable < last)
4293
+ do {
4294
+ var i = inductionVariable;
4295
+ inductionVariable = inductionVariable + 1 | 0;
4296
+ if (isNaN_0(frame.kappa_1[i])) {
4297
+ frame.kappa_1[i] = 0.0;
4298
+ }
4299
+ }
4300
+ while (inductionVariable < last);
4220
4301
  return frame;
4221
4302
  }
4222
4303
  function analyzeFrame($this, path, frame, options) {
@@ -4250,15 +4331,24 @@
4250
4331
  tmp_3 = tmp_3 + 1 | 0;
4251
4332
  }
4252
4333
  var rho = tmp_5;
4253
- var energy = Companion_instance_14.assemble_miimn7_k$(frame, center, rho, options.steeringLengthM_1, options.centeringLengthM_1);
4334
+ var tmp_8 = Companion_instance_14;
4335
+ var tmp_9 = 0;
4336
+ var tmp_10 = frame.get_size_woubt6_k$();
4337
+ var tmp_11 = booleanArray(tmp_10);
4338
+ while (tmp_9 < tmp_10) {
4339
+ var tmp_12 = tmp_9;
4340
+ tmp_11[tmp_12] = OffsetQp_instance.isFixed_s6zw2k_k$(bounds.lo_1[tmp_12], bounds.hi_1[tmp_12], options.boundEpsilonM_1);
4341
+ tmp_9 = tmp_9 + 1 | 0;
4342
+ }
4343
+ var energy = tmp_8.assemble_7bjwpt_k$(frame, center, rho, options.steeringLengthM_1, options.centeringLengthM_1, tmp_11);
4254
4344
  var seed = center;
4255
4345
  var solved = OffsetQp_instance.solve_j37bz7_k$(energy, bounds.lo_1, bounds.hi_1, seed, options.maxNewtonIterations_1, options.gradientTolerance_1, options.boundEpsilonM_1);
4256
4346
  var trajectoryCurvature = measureOffsetCurvature($this, frame, solved.offset_1, options);
4257
- var tmp_8 = frame.get_size_woubt6_k$();
4347
+ var tmp_13 = frame.get_size_woubt6_k$();
4258
4348
  // Inline function 'kotlin.collections.copyOf' call
4259
4349
  // Inline function 'kotlin.js.asDynamic' call
4260
- var tmp$ret$3 = frame.kappa_1.slice();
4261
- return new RacingLineReport(tmp_8, corners, tmp$ret$3, bounds.lo_1, bounds.hi_1, bounds.halfWidthM_1, solved.offset_1, trajectoryCurvature, solved.iterations_1, solved.gradientInfNorm_1, solved.converged_1, solved.activeConstraints_1);
4350
+ var tmp$ret$4 = frame.kappa_1.slice();
4351
+ return new RacingLineReport(tmp_13, corners, tmp$ret$4, bounds.lo_1, bounds.hi_1, bounds.halfWidthM_1, solved.offset_1, trajectoryCurvature, solved.iterations_1, solved.gradientInfNorm_1, solved.converged_1, solved.activeConstraints_1);
4262
4352
  }
4263
4353
  function measureOffsetCurvature($this, frame, offset, options) {
4264
4354
  var size = frame.get_size_woubt6_k$();
@@ -4405,7 +4495,7 @@
4405
4495
  return tmp;
4406
4496
  };
4407
4497
  var Companion_instance_16;
4408
- function Companion_getInstance_18() {
4498
+ function Companion_getInstance_19() {
4409
4499
  return Companion_instance_16;
4410
4500
  }
4411
4501
  function values_1() {
@@ -4460,13 +4550,13 @@
4460
4550
  this.DEFAULT_1 = new RacingLineOptions();
4461
4551
  }
4462
4552
  var Companion_instance_17;
4463
- function Companion_getInstance_19() {
4553
+ function Companion_getInstance_20() {
4464
4554
  if (Companion_instance_17 == null)
4465
4555
  new Companion_15();
4466
4556
  return Companion_instance_17;
4467
4557
  }
4468
4558
  function RacingLineOptions(enabled, defaultRoadWidthM, edgeMarginM, corridor, cornerEnterRadiusM, cornerExitRadiusM, minCornerLengthM, minCornerTurnDeg, hairpinTurnDeg, gentleRadiusM, regularityFactor, selfProximityGapM, straightRunM, straightRadiusM, widthSmoothWindowM, objectiveRadiusM, steeringLengthM, centeringLengthM, maxNewtonIterations, gradientTolerance, boundEpsilonM, curvature, simplifyToleranceCapM) {
4469
- Companion_getInstance_19();
4559
+ Companion_getInstance_20();
4470
4560
  enabled = enabled === VOID ? false : enabled;
4471
4561
  defaultRoadWidthM = defaultRoadWidthM === VOID ? 6.0 : defaultRoadWidthM;
4472
4562
  edgeMarginM = edgeMarginM === VOID ? 0.5 : edgeMarginM;
@@ -4488,7 +4578,7 @@
4488
4578
  maxNewtonIterations = maxNewtonIterations === VOID ? 200 : maxNewtonIterations;
4489
4579
  gradientTolerance = gradientTolerance === VOID ? 1.0E-8 : gradientTolerance;
4490
4580
  boundEpsilonM = boundEpsilonM === VOID ? 1.0E-6 : boundEpsilonM;
4491
- curvature = curvature === VOID ? Companion_getInstance_17().DEFAULT_1 : curvature;
4581
+ curvature = curvature === VOID ? Companion_getInstance_18().DEFAULT_1 : curvature;
4492
4582
  simplifyToleranceCapM = simplifyToleranceCapM === VOID ? 2.0 : simplifyToleranceCapM;
4493
4583
  this.enabled_1 = enabled;
4494
4584
  this.defaultRoadWidthM_1 = defaultRoadWidthM;
@@ -5158,19 +5248,14 @@
5158
5248
  }
5159
5249
  function elevationProviderFor(options) {
5160
5250
  _init_properties_EngineJsApi_kt__9bputf();
5161
- var tmp1_elvis_lhs = options == null ? null : options.demZoom;
5162
- var tmp;
5163
- if (tmp1_elvis_lhs == null) {
5164
- return new ElevationProvider();
5165
- } else {
5166
- tmp = tmp1_elvis_lhs;
5167
- }
5168
- var zoom = tmp;
5169
- return new ElevationProvider(new ElevationProviderConfig(zoom));
5251
+ var tmp = Companion_getInstance_3();
5252
+ var tmp1_elvis_lhs = options == null ? null : options.demSource;
5253
+ var tmp_0 = tmp.byId_8gmd94_k$(tmp1_elvis_lhs == null ? Companion_getInstance_3().DEFAULT_1.id_1 : tmp1_elvis_lhs);
5254
+ return provider(tmp_0, options == null ? null : options.demZoom);
5170
5255
  }
5171
5256
  function parseCorridor(name) {
5172
5257
  _init_properties_EngineJsApi_kt__9bputf();
5173
- return name == null ? Companion_getInstance_19().DEFAULT_1.corridor_1 : Companion_instance_16.byId_8gmd94_k$(name);
5258
+ return name == null ? Companion_getInstance_20().DEFAULT_1.corridor_1 : Companion_instance_16.byId_8gmd94_k$(name);
5174
5259
  }
5175
5260
  function defaultJsOptions() {
5176
5261
  _init_properties_EngineJsApi_kt__9bputf();
@@ -5186,11 +5271,11 @@
5186
5271
  }
5187
5272
  function toRoadCondition(_this__u8e3s4) {
5188
5273
  _init_properties_EngineJsApi_kt__9bputf();
5189
- var tmp0_elvis_lhs = Companion_getInstance_7().fromWire_2092k5_k$(_this__u8e3s4);
5274
+ var tmp0_elvis_lhs = Companion_getInstance_8().fromWire_2092k5_k$(_this__u8e3s4);
5190
5275
  var tmp;
5191
5276
  if (tmp0_elvis_lhs == null) {
5192
5277
  // Inline function 'kotlin.error' call
5193
- var message = 'Unknown CyclistDto.roadCondition: ' + _this__u8e3s4 + ' (expected one of ' + toString(Companion_getInstance_7().get_wireNames_7fokbq_k$()) + ')';
5278
+ var message = 'Unknown CyclistDto.roadCondition: ' + _this__u8e3s4 + ' (expected one of ' + toString(Companion_getInstance_8().get_wireNames_7fokbq_k$()) + ')';
5194
5279
  throw IllegalStateException_init_$Create$(toString(message));
5195
5280
  } else {
5196
5281
  tmp = tmp0_elvis_lhs;
@@ -5462,7 +5547,7 @@
5462
5547
  CYCLIST_KEYS = setOf_0(['massKg', 'cd', 'frontalAreaM2', 'maxLeanAngleDeg', 'maxBrakeG', 'maxSpeedKmH', 'roadCondition']);
5463
5548
  BIKE_KEYS = setOf_0(['crr', 'inertiaFront', 'inertiaRear', 'wheelRadiusM', 'efficiency', 'maxPedalingLeanAngleDeg']);
5464
5549
  WIND_KEYS = setOf_0(['windSpeed', 'windDirection']);
5465
- ENHANCE_OPTIONS_KEYS = setOf_0(['fixElevation', 'computeMaxSpeeds', 'virtualizeTrack', 'computeOnePointPerSecond', 'simplifyEnabled', 'simplifyToleranceM', 'simplifyZExaggeration', 'wPrimeBalanceEnabled', 'wPrimeBalanceCriticalPower', 'wPrimeBalanceWPrime', 'curvatureEnabled', 'racingLineEnabled', 'racingLineCorridor', 'racingLineRoadWidthM', 'elevationGainPreset', 'elevationGainThresholdM', 'elevationGainEnabled', 'elevationSmoothWindowM', 'demZoom']);
5550
+ ENHANCE_OPTIONS_KEYS = setOf_0(['fixElevation', 'computeMaxSpeeds', 'virtualizeTrack', 'computeOnePointPerSecond', 'simplifyEnabled', 'simplifyToleranceM', 'simplifyZExaggeration', 'wPrimeBalanceEnabled', 'wPrimeBalanceCriticalPower', 'wPrimeBalanceWPrime', 'curvatureEnabled', 'racingLineEnabled', 'racingLineCorridor', 'racingLineRoadWidthM', 'elevationGainPreset', 'elevationGainThresholdM', 'elevationGainEnabled', 'elevationSmoothWindowM', 'demZoom', 'demSource']);
5466
5551
  }
5467
5552
  }
5468
5553
  //region block: post-declaration