From 46d2274c8d2ae31db0417730dcb0116556caeedd Mon Sep 17 00:00:00 2001 From: chexit Date: Wed, 4 Nov 2026 21:00:47 +0300 Subject: [PATCH] Measure the #120 balance grid across batteries, ranges and target classes Wider same-seed sampling of the finite-burn/coast change: baseline 2689d93 (pre-#120) against the current tree, 6 variants x 8 seeds of a 46-drone raid (batt10/20/50, near200, far1500, hills20). Harness-only: Result carries the tally's fuse/expired/orphaned/energy_lost counts and a new ignored sim::balance::issue_120_grid test; no simulation parameters changed. Findings: kills are equal or up and leaks equal or down in every variant; fuse misses drop (far1500 70 -> 38 over 8 seeds); hills terrain losses fall (scrubbed 6 -> 2). MotorEnergyLost never fires in the 48 scenarios and expired stays <= 1: coast ends before drag reaches the 25% guidance threshold. Leaks stay concentrated in the ballistic/fast classes (Iskander/Kinzhal/Kh22/Zircon). No confirmed defect, so no tuning. Full airdef-core suite: 193 + 8 passed, 0 failed (baseline side 169 + 4). Co-Authored-By: Kimi Code --- airdef-mod/src/sim/balance.rs | 39 +++++++++++ docs/CODEX-HANDOFF.md | 27 +++++++- docs/IMPLEMENTATION-STATUS.md | 2 +- docs/measurements/issue-120-grid.csv | 97 ++++++++++++++++++++++++++++ 4 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 docs/measurements/issue-120-grid.csv diff --git a/airdef-mod/src/sim/balance.rs b/airdef-mod/src/sim/balance.rs index 952c4b1..dbaf5ec 100644 --- a/airdef-mod/src/sim/balance.rs +++ b/airdef-mod/src/sim/balance.rs @@ -54,6 +54,12 @@ pub(super) struct Result { pub missed: u32, /// Missiles fired by the heavy systems (S-400, S-500, Patriot). pub heavy: u32, + /// Interceptors whose fuse ran without a kill; whose life ran out; that lost their target on the way; + /// and that fell below their guidance speed after motor burnout (#120's coast/energy tally). + pub fuse_missed: u32, + pub expired: u32, + pub orphaned: u32, + pub energy_lost: u32, pub by_kind: Vec<(DroneKind, u32, u32)>, pub tally: String, /// Drones that vanished short of their aim without being shot down: kind, where, how far from the aim. @@ -322,6 +328,10 @@ pub(super) fn fly(s: &Setup) -> Result { result.crashes = sim.crashes; result.blocked = sim.tally.blocked; result.scrubbed = sim.tally.scrubbed; + result.fuse_missed = sim.tally.missed; + result.expired = sim.tally.expired; + result.orphaned = sim.tally.orphaned; + result.energy_lost = sim.tally.energy_lost; result.leaked = sim.hits; let mut kinds: HashMap = HashMap::new(); for h in &gone_unkilled { @@ -514,6 +524,35 @@ fn one_raid() { } } +/// Issue #120's wider sampling: battery sizes, launch-range bounds and the target classes of a raid +/// of 36, on the same seeds against the same cluster mix as `one_raid`. Prints CSV rows: +/// `variant,seed,sams,dist,sent,kills,leaked,missiles,heavy,ticks,blocked,scrubbed,crashes,fuse_miss,expired,orphaned,energy_lost,leaks_by_kind`. +/// `SEEDS=1-8 cargo test --release issue_120_grid -- --ignored --nocapture` (SEEDS overrides the seed range). +#[test] +#[ignore] +fn issue_120_grid() { + let seeds = match std::env::var("SEEDS") { + Ok(v) => { + let (a, b) = v.split_once('-').expect("SEEDS is a range like 1-8"); + let a: u64 = a.parse().expect("SEEDS start"); + let b: u64 = b.parse().expect("SEEDS end"); + a..=b + } + Err(_) => 1..=8, + }; + for (variant, sams, dist) in [("batt10", 10usize, 500.0), ("batt20", 20, 500.0), ("batt50", 50, 500.0), ("near200", 20, 200.0), ("far1500", 20, 1500.0), ("hills20", 20, 500.0)] { + for seed in seeds.clone() { + let mut s = Setup::new(sams, false, seed); + s.size = 36; + s.dist = dist; + s.hilly = variant == "hills20"; + let r = fly(&s); + let kinds = r.by_kind.iter().map(|k| format!("{:?}:{}", k.0, k.1)).collect::>().join(";"); + eprintln!("{variant},{seed},{sams},{dist},{},{},{},{},{},{},{},{},{},{},{},{},{},{}", r.launched, r.kills, r.leaked, r.missiles, r.heavy, r.ticks, r.blocked, r.scrubbed, r.crashes, r.fuse_missed, r.expired, r.orphaned, r.energy_lost, kinds); + } + } +} + /// Far launches over mountains where only a disc round the player is known: who crashes, where and how often. /// `cargo test --release far_table -- --ignored --nocapture` (DISC=300 sets the radius, 0 for all known). #[test] diff --git a/docs/CODEX-HANDOFF.md b/docs/CODEX-HANDOFF.md index 8b6e036..3a61968 100644 --- a/docs/CODEX-HANDOFF.md +++ b/docs/CODEX-HANDOFF.md @@ -226,6 +226,30 @@ baseline — 202 сбитых, 2 прорыва, 367 ракет; новое — Это небольшой регрессионный ориентир, не доказательство баланса всех типов/дальностей. Данные каждого seed: [CSV](measurements/issue-120-balance.csv). +Расширенная сетка остатка #120 (ветка `agent/issue-120-balance`, коммит см. в git): +baseline `2689d93` против текущего `e6a7000` (то есть с #118/#119/#121 и сменами движка, не только #120), +6 вариантов × 8 одинаковых seed, рейд `SIZE=36` (46 целей: Gerbera 10, Shahed 13, Geran3 5, Х-101 5, +«Калибр» 4, Х-22 2, «Циркон» 1, «Искандер» 4, «Кинжаль» 2; «Орешник» harness исключает, как в `one_raid`): +`batt10/20/50` (10/20/50 ЗРК, дистанция 500), `near200` (20 ЗРК, пуск в 200), `far1500` (20 ЗРК, пуск в 1500), +`hills20` (20 ЗРК, холмы, 500). Кластер тот же `MIX` из 10 систем: `SAMS=10` — по одному комплексу каждого типа. +Итого 2208 целей на сторону, 96 строк: [CSV](measurements/issue-120-grid.csv). Команда (игнорируемый тест +`sim::balance::issue_120_grid`, только harness-поля в `Result`, поведение симуляции не менялось): + +```sh +SEEDS=1-8 cargo test --release --manifest-path airdef-core/Cargo.toml issue_120_grid -- --ignored --nocapture +``` + +Факты сетки (суммы по 8 seed каждого варианта, baseline → текущий): сбитые 297→301 (batt10), 331→334 (batt20), +357→363 (batt50), 313→318 (near200), 328→338 (far1500), 328→334 (hills20); прорывы 70→66, 37→34, 11→5, +53→48, 40→30, 39→33. Промахов по взрывателю заметно меньше (например far1500: 70→38). Расход ракет близок +(516→504 … 597→583). На холмах потери у рельефа: разбито 14 и 14, самоуничтожений у хребта 6→2. +Прорывы во всех вариантах — преимущественно баллистические и быстрые классы («Искандер», «Кинжаль», Х-22, +«Циркон»); у медленных Shahed/Gerbera прорывов почти нет (0–2 на вариант), у ложных Gerbera — ноль ни разу. +`MotorEnergyLost` не сработал ни в одном из 48 сценариев текущего кода, `expired` ≤ 1 на вариант: coast +существует, но бои на этих дистанциях заканчиваются раньше, чем сопротивление 0.995/тик опустит скорость +ниже порога 25% (и раньше выработки ресурса). Это измеренное свойство профиля, не подтверждённый дефект, +поэтому параметры не менялись. Путь потери энергии покрыт юнит-тестом регресса (`regress.rs`), а не этой сеткой. + ```sh SAMS=20 SIZE=12 cargo test --release --manifest-path airdef-core/Cargo.toml sim::balance::one_raid -- --ignored --nocapture ``` @@ -316,7 +340,8 @@ Unknown и поздний ответ без повторного урона/за 2. В GUI: полный холодный пуск крупным планом; карточка On/Off; маршрут ТЗМ по сложной местности; разрушение стены одним взрывом и защита от того же взрыва по исходной геометрии. 3. Прослушать прекращение голоса двигателя при burnout и seek/экспорт вокруг этой границы. -4. Расширить баланс #120 на разные батареи, пределы дальности и классы целей; исходная CSV — ориентир. +4. Расширенная балансировка #120 (батареи/дальности/классы) записана в `measurements/issue-120-grid.csv`; + остаются прослушивание голоса мотора и платформенная приёмка. 5. Продолжить оставшиеся архитектурные #87/#88/#89/#91/#102 и художественный #115 по статусной таблице. Это незавершённая платформенная/визуальная приёмка, а не отсутствие перечисленного выше кода. diff --git a/docs/IMPLEMENTATION-STATUS.md b/docs/IMPLEMENTATION-STATUS.md index 38a2c0b..9458dcd 100644 --- a/docs/IMPLEMENTATION-STATUS.md +++ b/docs/IMPLEMENTATION-STATUS.md @@ -45,7 +45,7 @@ | Issue | Реализовано | Границы и оставшаяся приёмка | |---|---|---| | #119 | Три read-only луча в известной геометрии ослабляют непрямой blast для корпуса/узлов/объектов; проёмы дают частичное воздействие; прямой контакт сохранён | Unknown/stale: прежний урон без защиты, нулевое ожидание; partial blocks считаются занятыми кубами; GUI-проверка разрушения укрытия ещё нужна | -| #120 | Конечное горение, powered/coast, сопротивление и снижение доступного манёвра, один остаточный pk по фактической скорости; swept-встреча; события burnout/energy loss; согласованное прекращение факела/дыма/звука | Игровой профиль, без аэродинамики и реальных параметров; сравнительная выборка 12 рейдов, расширенная балансировка и прослушивание остаются | +| #120 | Конечное горение, powered/coast, сопротивление и снижение доступного манёвра, один остаточный pk по фактической скорости; swept-встреча; события burnout/energy loss; согласованное прекращение факела/дыма/звука | Игровой профиль, без аэродинамики и реальных параметров; сравнительная выборка 12 рейдов и расширенная сетка 48 рейдов (6 вариантов × 8 seed, батареи/дальности/классы) записаны в measurements; без подтверждённого дефекта параметры не менялись; прослушивание остаётся | | #121 | On/Off в команде и карте, save/replay; Off не создаёт own measurements и сохраняет сетевой приём; раскрытие работающего радара наблюдателем; SEAD использует last-known и возраст | Условный наблюдатель по расстоянию, без радиотехнической модели и ошибки пеленга; выбор на карте ещё не проверен в GUI | | #122 | Воспроизведён tick fuel exhaustion на двух максимальных составах, HD; полный обход height-cache на каждом взрыве заменён удалением нужных ключей; тест эквивалентности и WASM421/3602 прошли, max135.3M/300M; callback diagnostics/profile | Требуется приёмка на Windows; без старого лога нельзя подтвердить ту же причину пользовательского сеанса; FPS/GPU не измерялись | diff --git a/docs/measurements/issue-120-grid.csv b/docs/measurements/issue-120-grid.csv new file mode 100644 index 0000000..82cc85f --- /dev/null +++ b/docs/measurements/issue-120-grid.csv @@ -0,0 +1,97 @@ +variant,commit,seed,sams,dist,sent,kills,leaked,missiles,heavy,ticks,blocked,scrubbed,crashes,fuse_miss,expired,orphaned,energy_lost,leaks_by_kind +batt10,2689d933e790b7d751dfcf2a4c6a325e041562ce,1,10,500,46,35,11,61,9,781,0,0,0,9,0,21,0,Geran3:3;Kalibr:1;Kh22:1;Zircon:1;Iskander:3;Kinzhal:2 +batt10,e6a70004406b34ea17884875ce236a5fb4b849e4,1,10,500,46,37,9,62,9,812,0,0,0,4,1,23,0,Geran3:2;Kalibr:1;Kh22:1;Zircon:1;Iskander:2;Kinzhal:2 +batt10,2689d933e790b7d751dfcf2a4c6a325e041562ce,2,10,500,46,40,6,62,10,875,0,0,0,7,0,16,0,Shahed:1;Kh101:2;Kalibr:2;Iskander:1 +batt10,e6a70004406b34ea17884875ce236a5fb4b849e4,2,10,500,46,41,5,65,11,883,0,0,0,6,0,20,0,Shahed:1;Kh101:2;Kalibr:1;Iskander:1 +batt10,2689d933e790b7d751dfcf2a4c6a325e041562ce,3,10,500,46,39,7,56,6,740,0,0,0,4,0,18,0,Kalibr:2;Zircon:1;Iskander:3;Kinzhal:1 +batt10,e6a70004406b34ea17884875ce236a5fb4b849e4,3,10,500,46,39,7,56,6,740,0,0,0,4,0,18,0,Kalibr:2;Zircon:1;Iskander:3;Kinzhal:1 +batt10,2689d933e790b7d751dfcf2a4c6a325e041562ce,4,10,500,46,38,8,75,9,919,0,0,0,13,0,24,0,Geran3:1;Kh101:1;Kh22:1;Iskander:3;Kinzhal:2 +batt10,e6a70004406b34ea17884875ce236a5fb4b849e4,4,10,500,46,34,11,57,8,854,0,0,0,4,0,20,0,Geran3:2;Kh101:3;Kalibr:2;Kh22:1;Iskander:2;Kinzhal:1 +batt10,2689d933e790b7d751dfcf2a4c6a325e041562ce,5,10,500,46,34,11,66,8,871,0,0,0,12,0,26,0,Geran3:1;Kh101:2;Kh22:2;Zircon:1;Iskander:4;Kinzhal:2 +batt10,e6a70004406b34ea17884875ce236a5fb4b849e4,5,10,500,46,39,7,67,6,914,0,0,0,7,0,26,0,Kh101:2;Kh22:1;Iskander:3;Kinzhal:1 +batt10,2689d933e790b7d751dfcf2a4c6a325e041562ce,6,10,500,46,36,10,72,11,986,0,0,0,6,0,30,0,Geran3:1;Kh101:3;Kalibr:3;Zircon:1;Iskander:2;Kinzhal:2 +batt10,e6a70004406b34ea17884875ce236a5fb4b849e4,6,10,500,46,36,10,73,11,977,0,0,0,7,0,30,0,Geran3:1;Kh101:3;Kalibr:3;Zircon:1;Iskander:2;Kinzhal:2 +batt10,2689d933e790b7d751dfcf2a4c6a325e041562ce,7,10,500,46,35,11,62,6,802,0,0,0,6,0,23,0,Geran3:1;Kh101:2;Kalibr:2;Kh22:1;Zircon:1;Iskander:2;Kinzhal:2 +batt10,e6a70004406b34ea17884875ce236a5fb4b849e4,7,10,500,46,35,11,63,6,802,0,0,0,7,0,23,0,Geran3:1;Kh101:2;Kalibr:2;Kh22:1;Zircon:1;Iskander:2;Kinzhal:2 +batt10,2689d933e790b7d751dfcf2a4c6a325e041562ce,8,10,500,46,40,6,62,8,979,0,0,0,6,0,20,0,Kh101:1;Kh22:1;Iskander:2;Kinzhal:2 +batt10,e6a70004406b34ea17884875ce236a5fb4b849e4,8,10,500,46,40,6,61,8,979,0,0,0,3,0,21,0,Kh101:1;Kh22:1;Iskander:2;Kinzhal:2 +batt20,2689d933e790b7d751dfcf2a4c6a325e041562ce,1,20,500,46,41,5,72,13,580,0,0,0,11,0,22,0,Kh22:1;Zircon:1;Iskander:2;Kinzhal:1 +batt20,e6a70004406b34ea17884875ce236a5fb4b849e4,1,20,500,46,42,4,75,13,578,0,0,0,10,1,22,0,Kalibr:1;Kh22:1;Iskander:1;Kinzhal:1 +batt20,2689d933e790b7d751dfcf2a4c6a325e041562ce,2,20,500,46,40,6,81,14,629,0,0,0,10,0,36,0,Kh101:2;Kalibr:1;Zircon:1;Kinzhal:2 +batt20,e6a70004406b34ea17884875ce236a5fb4b849e4,2,20,500,46,41,5,71,15,612,0,0,0,4,0,26,0,Kh101:2;Kalibr:1;Kinzhal:2 +batt20,2689d933e790b7d751dfcf2a4c6a325e041562ce,3,20,500,46,42,4,64,13,513,0,0,0,9,0,17,0,Zircon:1;Iskander:3 +batt20,e6a70004406b34ea17884875ce236a5fb4b849e4,3,20,500,46,44,2,68,13,541,0,0,0,6,0,23,0,Zircon:1;Iskander:1 +batt20,2689d933e790b7d751dfcf2a4c6a325e041562ce,4,20,500,46,42,4,81,15,581,0,0,0,14,0,28,0,Kh22:1;Iskander:2;Kinzhal:1 +batt20,e6a70004406b34ea17884875ce236a5fb4b849e4,4,20,500,46,42,4,76,15,614,0,0,0,8,0,27,0,Kh22:1;Iskander:2;Kinzhal:1 +batt20,2689d933e790b7d751dfcf2a4c6a325e041562ce,5,20,500,46,42,4,71,15,730,0,0,0,7,0,23,0,Kh101:1;Iskander:2;Kinzhal:1 +batt20,e6a70004406b34ea17884875ce236a5fb4b849e4,5,20,500,46,42,4,73,15,748,0,0,0,6,0,25,0,Kh101:1;Iskander:2;Kinzhal:1 +batt20,2689d933e790b7d751dfcf2a4c6a325e041562ce,6,20,500,46,41,5,77,14,696,0,0,0,7,0,29,0,Kalibr:1;Zircon:1;Iskander:1;Kinzhal:2 +batt20,e6a70004406b34ea17884875ce236a5fb4b849e4,6,20,500,46,41,5,80,13,681,0,0,0,5,0,34,0,Kalibr:1;Zircon:1;Iskander:1;Kinzhal:2 +batt20,2689d933e790b7d751dfcf2a4c6a325e041562ce,7,20,500,46,40,6,68,13,619,0,0,0,6,0,23,0,Kh101:2;Kh22:1;Zircon:1;Kinzhal:2 +batt20,e6a70004406b34ea17884875ce236a5fb4b849e4,7,20,500,46,40,6,68,13,619,0,0,0,6,0,23,0,Kh101:2;Kh22:1;Zircon:1;Kinzhal:2 +batt20,2689d933e790b7d751dfcf2a4c6a325e041562ce,8,20,500,46,43,3,70,15,632,0,0,0,10,0,23,0,Zircon:1;Iskander:1;Kinzhal:1 +batt20,e6a70004406b34ea17884875ce236a5fb4b849e4,8,20,500,46,42,4,67,14,669,0,0,0,8,0,23,0,Kh101:1;Iskander:2;Kinzhal:1 +batt50,2689d933e790b7d751dfcf2a4c6a325e041562ce,1,50,500,46,45,1,84,30,394,0,0,0,9,0,31,0,Kh22:1 +batt50,e6a70004406b34ea17884875ce236a5fb4b849e4,1,50,500,46,45,1,83,28,418,0,0,0,7,0,32,0,Kh22:1 +batt50,2689d933e790b7d751dfcf2a4c6a325e041562ce,2,50,500,46,46,0,83,26,575,0,0,0,10,0,31,0, +batt50,e6a70004406b34ea17884875ce236a5fb4b849e4,2,50,500,46,46,0,82,28,514,0,0,0,6,0,35,0, +batt50,2689d933e790b7d751dfcf2a4c6a325e041562ce,3,50,500,46,46,0,81,27,499,0,0,0,10,0,35,0, +batt50,e6a70004406b34ea17884875ce236a5fb4b849e4,3,50,500,46,46,0,77,27,523,0,0,0,3,0,35,0, +batt50,2689d933e790b7d751dfcf2a4c6a325e041562ce,4,50,500,46,45,1,84,31,581,0,0,0,14,0,26,0,Iskander:1;Kinzhal:1 +batt50,e6a70004406b34ea17884875ce236a5fb4b849e4,4,50,500,46,46,0,82,31,607,0,0,0,7,0,32,0, +batt50,2689d933e790b7d751dfcf2a4c6a325e041562ce,5,50,500,46,44,2,82,32,586,0,0,0,8,0,36,0,Zircon:1;Kinzhal:1 +batt50,e6a70004406b34ea17884875ce236a5fb4b849e4,5,50,500,46,46,0,87,29,707,0,0,0,10,0,40,0, +batt50,2689d933e790b7d751dfcf2a4c6a325e041562ce,6,50,500,46,45,1,82,26,629,0,0,0,9,0,29,0,Kinzhal:1 +batt50,e6a70004406b34ea17884875ce236a5fb4b849e4,6,50,500,46,46,0,94,29,584,0,0,0,11,0,39,0, +batt50,2689d933e790b7d751dfcf2a4c6a325e041562ce,7,50,500,46,41,5,91,29,573,0,0,0,17,0,34,0,Kh101:1;Kh22:1;Zircon:1;Iskander:1;Kinzhal:1 +batt50,e6a70004406b34ea17884875ce236a5fb4b849e4,7,50,500,46,42,4,82,31,523,0,0,0,4,0,37,0,Kh101:1;Kh22:1;Zircon:1;Kinzhal:1 +batt50,2689d933e790b7d751dfcf2a4c6a325e041562ce,8,50,500,46,45,1,74,26,677,0,0,0,6,0,30,0,Kinzhal:1 +batt50,e6a70004406b34ea17884875ce236a5fb4b849e4,8,50,500,46,46,0,75,26,695,0,0,0,4,0,33,0, +near200,2689d933e790b7d751dfcf2a4c6a325e041562ce,1,20,200,46,41,5,75,16,350,0,0,0,2,0,32,0,Kh22:1;Zircon:1;Iskander:2;Kinzhal:1 +near200,e6a70004406b34ea17884875ce236a5fb4b849e4,1,20,200,46,41,5,75,16,350,0,0,0,2,0,32,0,Kh22:1;Zircon:1;Iskander:2;Kinzhal:1 +near200,2689d933e790b7d751dfcf2a4c6a325e041562ce,2,20,200,46,40,5,69,14,383,0,0,1,5,0,25,0,Shahed:1;Kh101:2;Iskander:1;Kinzhal:2 +near200,e6a70004406b34ea17884875ce236a5fb4b849e4,2,20,200,46,40,5,71,14,401,0,0,1,4,0,29,0,Kh101:2;Iskander:2;Kinzhal:1 +near200,2689d933e790b7d751dfcf2a4c6a325e041562ce,3,20,200,46,39,6,61,14,375,0,0,1,3,0,26,0,Shahed:1;Kh101:2;Iskander:2;Kinzhal:1 +near200,e6a70004406b34ea17884875ce236a5fb4b849e4,3,20,200,46,39,6,60,12,344,0,0,1,2,0,22,0,Shahed:1;Kh101:2;Iskander:3 +near200,2689d933e790b7d751dfcf2a4c6a325e041562ce,4,20,200,46,40,6,83,15,459,0,0,0,15,0,30,0,Geran3:1;Kh22:2;Zircon:1;Iskander:1;Kinzhal:1 +near200,e6a70004406b34ea17884875ce236a5fb4b849e4,4,20,200,46,40,6,73,13,495,0,0,0,7,0,26,0,Geran3:1;Kh22:2;Iskander:2;Kinzhal:1 +near200,2689d933e790b7d751dfcf2a4c6a325e041562ce,5,20,200,46,37,9,76,16,406,0,0,0,14,0,33,0,Kh101:1;Kh22:2;Zircon:1;Iskander:3;Kinzhal:2 +near200,e6a70004406b34ea17884875ce236a5fb4b849e4,5,20,200,46,41,5,71,17,455,0,0,0,2,0,34,0,Kh101:1;Kh22:1;Iskander:2;Kinzhal:1 +near200,2689d933e790b7d751dfcf2a4c6a325e041562ce,6,20,200,46,39,7,71,13,450,0,0,0,4,0,29,0,Kh101:1;Kh22:1;Zircon:1;Iskander:2;Kinzhal:2 +near200,e6a70004406b34ea17884875ce236a5fb4b849e4,6,20,200,46,39,7,71,13,450,0,0,0,4,0,29,0,Kh101:1;Kh22:1;Zircon:1;Iskander:2;Kinzhal:2 +near200,2689d933e790b7d751dfcf2a4c6a325e041562ce,7,20,200,46,39,7,77,14,448,0,0,0,9,0,31,0,Kh101:2;Kh22:1;Zircon:1;Iskander:2;Kinzhal:2 +near200,e6a70004406b34ea17884875ce236a5fb4b849e4,7,20,200,46,40,6,84,14,465,0,0,0,11,0,33,0,Kh101:1;Kh22:1;Zircon:1;Iskander:1;Kinzhal:2 +near200,2689d933e790b7d751dfcf2a4c6a325e041562ce,8,20,200,46,38,8,70,14,524,0,0,0,10,0,28,0,Kh101:1;Kh22:1;Zircon:1;Iskander:3;Kinzhal:2 +near200,e6a70004406b34ea17884875ce236a5fb4b849e4,8,20,200,46,38,8,67,15,563,0,0,0,4,0,31,0,Kh101:2;Kh22:1;Zircon:1;Iskander:2;Kinzhal:2 +far1500,2689d933e790b7d751dfcf2a4c6a325e041562ce,1,20,1500,46,42,4,75,15,2181,0,0,0,9,0,27,0,Kh101:1;Iskander:1;Kinzhal:2 +far1500,e6a70004406b34ea17884875ce236a5fb4b849e4,1,20,1500,46,44,2,68,14,2218,0,0,0,4,0,24,0,Iskander:1;Kinzhal:1 +far1500,2689d933e790b7d751dfcf2a4c6a325e041562ce,2,20,1500,46,41,5,72,17,2342,0,0,0,8,0,23,0,Kh101:1;Kalibr:1;Kh22:1;Iskander:1;Kinzhal:1 +far1500,e6a70004406b34ea17884875ce236a5fb4b849e4,2,20,1500,46,43,3,70,20,2342,0,0,0,7,0,20,0,Kh101:1;Kalibr:1;Iskander:1 +far1500,2689d933e790b7d751dfcf2a4c6a325e041562ce,3,20,1500,46,43,3,68,19,2385,0,0,0,8,0,19,0,Iskander:2;Kinzhal:1 +far1500,e6a70004406b34ea17884875ce236a5fb4b849e4,3,20,1500,46,44,2,70,20,2363,0,0,0,5,0,21,0,Iskander:2 +far1500,2689d933e790b7d751dfcf2a4c6a325e041562ce,4,20,1500,46,41,5,73,16,2388,0,0,0,14,0,22,0,Kh101:1;Kh22:1;Iskander:2;Kinzhal:1 +far1500,e6a70004406b34ea17884875ce236a5fb4b849e4,4,20,1500,46,42,4,68,16,2387,0,0,0,5,0,25,0,Kh101:1;Kh22:1;Iskander:1;Kinzhal:1 +far1500,2689d933e790b7d751dfcf2a4c6a325e041562ce,5,20,1500,46,42,4,75,18,2550,0,0,0,12,0,24,0,Kh101:2;Iskander:1;Kinzhal:1 +far1500,e6a70004406b34ea17884875ce236a5fb4b849e4,5,20,1500,46,42,4,69,19,2635,0,0,0,5,0,23,0,Kh101:2;Iskander:1;Kinzhal:1 +far1500,2689d933e790b7d751dfcf2a4c6a325e041562ce,6,20,1500,46,36,10,75,18,2575,0,0,0,3,0,37,0,Kh101:2;Kalibr:1;Kh22:1;Zircon:1;Iskander:3;Kinzhal:2 +far1500,e6a70004406b34ea17884875ce236a5fb4b849e4,6,20,1500,46,38,8,76,18,2575,0,0,0,2,0,36,0,Kh101:2;Kalibr:1;Kh22:1;Zircon:1;Iskander:2;Kinzhal:2 +far1500,2689d933e790b7d751dfcf2a4c6a325e041562ce,7,20,1500,46,42,4,78,20,2361,0,0,0,10,0,27,0,Kh101:1;Iskander:1;Kinzhal:2 +far1500,e6a70004406b34ea17884875ce236a5fb4b849e4,7,20,1500,46,43,3,73,18,2361,0,0,0,6,0,25,0,Kh101:1;Kalibr:1;Kinzhal:1 +far1500,2689d933e790b7d751dfcf2a4c6a325e041562ce,8,20,1500,46,41,5,66,19,2544,0,0,0,6,0,23,0,Kh101:1;Iskander:2;Kinzhal:2 +far1500,e6a70004406b34ea17884875ce236a5fb4b849e4,8,20,1500,46,42,4,68,20,2544,0,0,0,4,0,26,0,Kh101:1;Iskander:2;Kinzhal:1 +hills20,2689d933e790b7d751dfcf2a4c6a325e041562ce,1,20,500,46,41,5,79,14,606,0,0,0,12,0,27,0,Kalibr:1;Kh22:1;Zircon:1;Iskander:2 +hills20,e6a70004406b34ea17884875ce236a5fb4b849e4,1,20,500,46,40,6,73,12,551,0,0,0,8,0,25,0,Geran3:1;Kalibr:1;Kh22:1;Zircon:1;Iskander:3;Kinzhal:1 +hills20,2689d933e790b7d751dfcf2a4c6a325e041562ce,2,20,500,46,38,8,77,15,651,8,0,0,2,0,30,0,Kh101:2;Kalibr:1;Kh22:1;Iskander:3;Kinzhal:1 +hills20,e6a70004406b34ea17884875ce236a5fb4b849e4,2,20,500,46,38,8,81,14,681,7,0,0,3,0,33,0,Kh101:2;Kalibr:1;Kh22:1;Iskander:3;Kinzhal:1 +hills20,2689d933e790b7d751dfcf2a4c6a325e041562ce,3,20,500,46,44,1,79,12,640,0,1,1,10,0,28,0,Kh101:1;Zircon:1;Iskander:1 +hills20,e6a70004406b34ea17884875ce236a5fb4b849e4,3,20,500,46,44,1,78,13,675,0,0,1,7,0,29,0,Kh101:1;Zircon:1;Iskander:1 +hills20,2689d933e790b7d751dfcf2a4c6a325e041562ce,4,20,500,46,40,6,82,15,492,3,3,0,13,0,25,0,Kh22:1;Iskander:4;Kinzhal:1 +hills20,e6a70004406b34ea17884875ce236a5fb4b849e4,4,20,500,46,42,4,77,15,515,3,2,0,8,0,24,0,Kh22:1;Iskander:3 +hills20,2689d933e790b7d751dfcf2a4c6a325e041562ce,5,20,500,46,39,7,69,18,514,0,1,0,8,0,23,0,Kh22:1;Iskander:4;Kinzhal:2 +hills20,e6a70004406b34ea17884875ce236a5fb4b849e4,5,20,500,46,42,4,65,15,469,1,0,0,4,0,22,0,Kh22:1;Iskander:2;Kinzhal:1 +hills20,2689d933e790b7d751dfcf2a4c6a325e041562ce,6,20,500,46,43,3,68,13,612,0,0,0,3,0,22,0,Zircon:1;Iskander:1;Kinzhal:1 +hills20,e6a70004406b34ea17884875ce236a5fb4b849e4,6,20,500,46,43,3,68,13,612,0,0,0,3,0,22,0,Zircon:1;Iskander:1;Kinzhal:1 +hills20,2689d933e790b7d751dfcf2a4c6a325e041562ce,7,20,500,46,41,5,66,13,554,0,0,0,6,0,19,0,Kh22:1;Zircon:1;Iskander:1;Kinzhal:2 +hills20,e6a70004406b34ea17884875ce236a5fb4b849e4,7,20,500,46,43,3,64,15,546,0,0,0,5,0,16,0,Kh22:1;Zircon:1;Iskander:1;Kinzhal:1 +hills20,2689d933e790b7d751dfcf2a4c6a325e041562ce,8,20,500,46,42,4,77,14,712,3,0,0,14,0,20,0,Iskander:2;Kinzhal:2 +hills20,e6a70004406b34ea17884875ce236a5fb4b849e4,8,20,500,46,42,4,77,14,712,3,0,0,13,0,20,0,Iskander:2;Kinzhal:2