gameplay: port timed self-recovery policy
Browse files- crates/urt-gameplay/src/bin/urt-move-callbacks.rs +35 -0
- crates/urt-gameplay/src/move_callbacks.rs +138 -0
- docs/FINDINGS.md +2 -0
- docs/PROVISIONAL_TODO.md +2 -0
- docs/RESEARCH_LEDGER.md +4 -0
- docs/REVERSE_ENGINEERING_TODO.md +2 -0
- docs/research/README.md +2 -0
- docs/research/RUST_MOVE_SELF_RECOVERY.md +5 -0
- docs/research/rust-health-impulse.json +1 -1
- docs/research/rust-move-self-recovery.json +1159 -0
- scripts/analyze_rust_move_self_recovery.py +18 -0
- scripts/test_rust_move_self_recovery.py +9 -0
- xtask/checks.tsv +26 -0
- xtask/src/lib.rs +2 -0
crates/urt-gameplay/src/bin/urt-move-callbacks.rs
CHANGED
|
@@ -68,6 +68,41 @@ fn main() {
|
|
| 68 |
.unwrap();
|
| 69 |
println!("{{{}}}", fields(s, &e));
|
| 70 |
}
|
|
|
|
| 71 |
_ => panic!("unknown policy"),
|
| 72 |
}
|
| 73 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
.unwrap();
|
| 69 |
println!("{{{}}}", fields(s, &e));
|
| 70 |
}
|
| 71 |
+
"self" => println!("{}", self_recovery(&w)),
|
| 72 |
_ => panic!("unknown policy"),
|
| 73 |
}
|
| 74 |
}
|
| 75 |
+
|
| 76 |
+
fn self_recovery(w: &[u32]) -> String {
|
| 77 |
+
assert_eq!(w.len(), 16);
|
| 78 |
+
let mut s = SelfRecoveryState {
|
| 79 |
+
meter: MeterState {
|
| 80 |
+
meter: w[10],
|
| 81 |
+
carry: w[11],
|
| 82 |
+
flags220: w[6],
|
| 83 |
+
flags104: w[7],
|
| 84 |
+
pm_type: w[8],
|
| 85 |
+
receiver: 999,
|
| 86 |
+
event_entity: [7, 0x80000001],
|
| 87 |
+
},
|
| 88 |
+
last: w[13],
|
| 89 |
+
};
|
| 90 |
+
let e = self_recover(
|
| 91 |
+
&mut s,
|
| 92 |
+
SelfRecoveryInput {
|
| 93 |
+
entity: w[0] != 0,
|
| 94 |
+
client: w[1] != 0,
|
| 95 |
+
mode: w[2],
|
| 96 |
+
connection: w[3],
|
| 97 |
+
health: w[4],
|
| 98 |
+
follow: w[5],
|
| 99 |
+
seconds: w[9],
|
| 100 |
+
tick: w[12],
|
| 101 |
+
slot: 2,
|
| 102 |
+
owner: 0x12345678,
|
| 103 |
+
},
|
| 104 |
+
)
|
| 105 |
+
.unwrap();
|
| 106 |
+
assert_eq!(&w[14..], &[1, 0]);
|
| 107 |
+
format!("{{{},\"last\":{}}}", fields(s.meter, &e), s.last)
|
| 108 |
+
}
|
crates/urt-gameplay/src/move_callbacks.rs
CHANGED
|
@@ -148,3 +148,141 @@ mod meter_tests {
|
|
| 148 |
assert_eq!(s, bad);
|
| 149 |
}
|
| 150 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 148 |
assert_eq!(s, bad);
|
| 149 |
}
|
| 150 |
}
|
| 151 |
+
|
| 152 |
+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
| 153 |
+
pub struct SelfRecoveryState {
|
| 154 |
+
pub meter: MeterState,
|
| 155 |
+
pub last: u32,
|
| 156 |
+
}
|
| 157 |
+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
| 158 |
+
pub struct SelfRecoveryInput {
|
| 159 |
+
pub entity: bool,
|
| 160 |
+
pub client: bool,
|
| 161 |
+
pub mode: u32,
|
| 162 |
+
pub connection: u32,
|
| 163 |
+
pub health: u32,
|
| 164 |
+
pub follow: u32,
|
| 165 |
+
pub seconds: u32,
|
| 166 |
+
pub tick: u32,
|
| 167 |
+
pub slot: i32,
|
| 168 |
+
pub owner: u32,
|
| 169 |
+
}
|
| 170 |
+
/// Original152673 with actual meter policy. Admission exits do not evaluate
|
| 171 |
+
/// unused floating inputs. State/effect plans commit together on success.
|
| 172 |
+
pub fn self_recover(
|
| 173 |
+
state: &mut SelfRecoveryState,
|
| 174 |
+
input: SelfRecoveryInput,
|
| 175 |
+
) -> Result<Vec<CallbackEffect>, Error> {
|
| 176 |
+
if !input.entity
|
| 177 |
+
|| !input.client
|
| 178 |
+
|| input.mode != 10
|
| 179 |
+
|| input.connection != 2
|
| 180 |
+
|| input.health as i32 <= 0
|
| 181 |
+
|| input.follow != 0
|
| 182 |
+
|| state.meter.flags220 & 16384 == 0
|
| 183 |
+
{
|
| 184 |
+
return Ok(vec![]);
|
| 185 |
+
}
|
| 186 |
+
let seconds = f32::from_bits(input.seconds);
|
| 187 |
+
if !seconds.is_finite() {
|
| 188 |
+
return Err(Error::NonFinite);
|
| 189 |
+
}
|
| 190 |
+
if seconds == 0. {
|
| 191 |
+
return Err(Error::InvalidInput);
|
| 192 |
+
}
|
| 193 |
+
let mut next = *state;
|
| 194 |
+
let increment =
|
| 195 |
+
32000.0 / (seconds * 1000.0) * (input.tick.wrapping_sub(next.last) as i32 as f32);
|
| 196 |
+
let carry = f32::from_bits(next.meter.carry) + increment;
|
| 197 |
+
if !increment.is_finite() || !carry.is_finite() {
|
| 198 |
+
return Err(Error::NonFinite);
|
| 199 |
+
}
|
| 200 |
+
next.meter.carry = carry.to_bits();
|
| 201 |
+
next.last = input.tick;
|
| 202 |
+
let out = finish_meter(
|
| 203 |
+
&mut next.meter,
|
| 204 |
+
MeterInput {
|
| 205 |
+
melt: true,
|
| 206 |
+
mirror: false,
|
| 207 |
+
slot: input.slot,
|
| 208 |
+
other_slot: 0,
|
| 209 |
+
owner: input.owner,
|
| 210 |
+
},
|
| 211 |
+
)?;
|
| 212 |
+
*state = next;
|
| 213 |
+
Ok(out)
|
| 214 |
+
}
|
| 215 |
+
#[cfg(test)]
|
| 216 |
+
mod recovery_tests {
|
| 217 |
+
use super::*;
|
| 218 |
+
fn state() -> SelfRecoveryState {
|
| 219 |
+
SelfRecoveryState {
|
| 220 |
+
meter: MeterState {
|
| 221 |
+
meter: 0,
|
| 222 |
+
carry: 0.5f32.to_bits(),
|
| 223 |
+
flags220: 16384,
|
| 224 |
+
flags104: 16,
|
| 225 |
+
pm_type: 4,
|
| 226 |
+
receiver: 999,
|
| 227 |
+
event_entity: [7, 1],
|
| 228 |
+
},
|
| 229 |
+
last: u32::MAX - 15,
|
| 230 |
+
}
|
| 231 |
+
}
|
| 232 |
+
fn input() -> SelfRecoveryInput {
|
| 233 |
+
SelfRecoveryInput {
|
| 234 |
+
entity: true,
|
| 235 |
+
client: true,
|
| 236 |
+
mode: 10,
|
| 237 |
+
connection: 2,
|
| 238 |
+
health: 1,
|
| 239 |
+
follow: 0,
|
| 240 |
+
seconds: 2f32.to_bits(),
|
| 241 |
+
tick: 10,
|
| 242 |
+
slot: 2,
|
| 243 |
+
owner: 9,
|
| 244 |
+
}
|
| 245 |
+
}
|
| 246 |
+
#[test]
|
| 247 |
+
fn wrapped_delta_and_early_exit_preservation() {
|
| 248 |
+
let mut s = state();
|
| 249 |
+
self_recover(&mut s, input()).unwrap();
|
| 250 |
+
assert_eq!(s.meter.meter, 416);
|
| 251 |
+
assert_eq!(s.last, 10);
|
| 252 |
+
assert_eq!(s.meter.carry, 0);
|
| 253 |
+
let old = s;
|
| 254 |
+
assert!(
|
| 255 |
+
self_recover(
|
| 256 |
+
&mut s,
|
| 257 |
+
SelfRecoveryInput {
|
| 258 |
+
mode: 9,
|
| 259 |
+
seconds: f32::NAN.to_bits(),
|
| 260 |
+
..input()
|
| 261 |
+
}
|
| 262 |
+
)
|
| 263 |
+
.unwrap()
|
| 264 |
+
.is_empty()
|
| 265 |
+
);
|
| 266 |
+
assert_eq!(s, old);
|
| 267 |
+
}
|
| 268 |
+
#[test]
|
| 269 |
+
fn invalid_duration_and_late_conversion_roll_back_clock() {
|
| 270 |
+
let mut s = state();
|
| 271 |
+
let old = s;
|
| 272 |
+
assert!(
|
| 273 |
+
self_recover(
|
| 274 |
+
&mut s,
|
| 275 |
+
SelfRecoveryInput {
|
| 276 |
+
seconds: 0,
|
| 277 |
+
..input()
|
| 278 |
+
}
|
| 279 |
+
)
|
| 280 |
+
.is_err()
|
| 281 |
+
);
|
| 282 |
+
assert_eq!(s, old);
|
| 283 |
+
s.meter.carry = f32::MAX.to_bits();
|
| 284 |
+
let old = s;
|
| 285 |
+
assert!(self_recover(&mut s, input()).is_err());
|
| 286 |
+
assert_eq!(s, old);
|
| 287 |
+
}
|
| 288 |
+
}
|
docs/FINDINGS.md
CHANGED
|
@@ -1927,3 +1927,5 @@ RE-994: 90 original-QVM fixtures execute152386: signed integer meter converts to
|
|
| 1927 |
RE-995: Rust ports meter f32 conversion, truncation, clamping, completion masks, event ownership and optional receiver mirroring across ninety source cases. Completion effects preserve source ordering. Nonfinite/out-of-range conversion, invalid client indices and assisted completion without a receiver reject before state mutation. Teleport/reset/log/event allocation remain effect plans and supplied event state rather than native execution. [Evidence](research/RUST_MOVE_METER.md).
|
| 1928 |
|
| 1929 |
RE-996: Thirty-six original-QVM cases execute152673 with actual meter child152386. Entity/client existence, mode10, connection2, positive signed health, zero follow and client mask16384 gate processing. Progress uses staged f32 operations32000/(seconds*1000)*signed wrapped elapsed, adds carry, advances clock6324, then runs self-melt completion. Negative elapsed/duration, wrapped ticks, fractional carry and all admission exits are covered. Early exits preserve clock and carry; event/log effects remain captured. [Evidence](research/QVM_MOVE_SELF_RECOVERY.md).
|
|
|
|
|
|
|
|
|
| 1927 |
RE-995: Rust ports meter f32 conversion, truncation, clamping, completion masks, event ownership and optional receiver mirroring across ninety source cases. Completion effects preserve source ordering. Nonfinite/out-of-range conversion, invalid client indices and assisted completion without a receiver reject before state mutation. Teleport/reset/log/event allocation remain effect plans and supplied event state rather than native execution. [Evidence](research/RUST_MOVE_METER.md).
|
| 1928 |
|
| 1929 |
RE-996: Thirty-six original-QVM cases execute152673 with actual meter child152386. Entity/client existence, mode10, connection2, positive signed health, zero follow and client mask16384 gate processing. Progress uses staged f32 operations32000/(seconds*1000)*signed wrapped elapsed, adds carry, advances clock6324, then runs self-melt completion. Negative elapsed/duration, wrapped ticks, fractional carry and all admission exits are covered. Early exits preserve clock and carry; event/log effects remain captured. [Evidence](research/QVM_MOVE_SELF_RECOVERY.md).
|
| 1930 |
+
|
| 1931 |
+
RE-997: Rust ports actual self-recovery gates, wrapped signed elapsed time, staged f32 progress and the meter child across36 source cases. Admission exits preserve state without reading unused float configuration. Active invalid duration, nonfinite progress or unsupported conversion reject without advancing clock or committing meter/event changes. Unit tests cover wrapped elapsed time, inactive NaN preservation and late-error rollback. [Evidence](research/RUST_MOVE_SELF_RECOVERY.md).
|
docs/PROVISIONAL_TODO.md
CHANGED
|
@@ -1984,3 +1984,5 @@ RE-974–983 completed routing, command rewrite, inactivity, movement-parameter
|
|
| 1984 |
- [x] RE-995 Port meter completion and captured thaw effects ([evidence](research/RUST_MOVE_METER.md)).
|
| 1985 |
|
| 1986 |
- [x] RE-996 Recover timed mode10 self-recovery ([evidence](research/QVM_MOVE_SELF_RECOVERY.md)).
|
|
|
|
|
|
|
|
|
| 1984 |
- [x] RE-995 Port meter completion and captured thaw effects ([evidence](research/RUST_MOVE_METER.md)).
|
| 1985 |
|
| 1986 |
- [x] RE-996 Recover timed mode10 self-recovery ([evidence](research/QVM_MOVE_SELF_RECOVERY.md)).
|
| 1987 |
+
|
| 1988 |
+
- [x] RE-997 Port timed self-recovery with atomic state updates ([evidence](research/RUST_MOVE_SELF_RECOVERY.md)).
|
docs/RESEARCH_LEDGER.md
CHANGED
|
@@ -2659,3 +2659,7 @@ Rust ports meter f32 conversion, truncation, clamping, completion masks, event o
|
|
| 2659 |
## 2026-10-29 — RE-996 Recover timed mode10 self-recovery
|
| 2660 |
|
| 2661 |
Thirty-six original-QVM cases execute152673 with actual meter child152386. Entity/client existence, mode10, connection2, positive signed health, zero follow and client mask16384 gate processing. Progress uses staged f32 operations32000/(seconds*1000)*signed wrapped elapsed, adds carry, advances clock6324, then runs self-melt completion. Negative elapsed/duration, wrapped ticks, fractional carry and all admission exits are covered. Early exits preserve clock and carry; event/log effects remain captured. Focused `cargo xtask test-group qvm-move-self-recovery` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2659 |
## 2026-10-29 — RE-996 Recover timed mode10 self-recovery
|
| 2660 |
|
| 2661 |
Thirty-six original-QVM cases execute152673 with actual meter child152386. Entity/client existence, mode10, connection2, positive signed health, zero follow and client mask16384 gate processing. Progress uses staged f32 operations32000/(seconds*1000)*signed wrapped elapsed, adds carry, advances clock6324, then runs self-melt completion. Negative elapsed/duration, wrapped ticks, fractional carry and all admission exits are covered. Early exits preserve clock and carry; event/log effects remain captured. Focused `cargo xtask test-group qvm-move-self-recovery` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
|
| 2662 |
+
|
| 2663 |
+
## 2026-10-29 — RE-997 Port timed self-recovery with atomic state updates
|
| 2664 |
+
|
| 2665 |
+
Rust ports actual self-recovery gates, wrapped signed elapsed time, staged f32 progress and the meter child across36 source cases. Admission exits preserve state without reading unused float configuration. Active invalid duration, nonfinite progress or unsupported conversion reject without advancing clock or committing meter/event changes. Unit tests cover wrapped elapsed time, inactive NaN preservation and late-error rollback. Focused `cargo xtask test-group rust-move-self-recovery` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
|
docs/REVERSE_ENGINEERING_TODO.md
CHANGED
|
@@ -2021,3 +2021,5 @@ RE-974–983 recover routing, command rewriting, inactivity and composed setup t
|
|
| 2021 |
- [x] RE-995 Port meter completion and captured thaw effects ([evidence](research/RUST_MOVE_METER.md)).
|
| 2022 |
|
| 2023 |
- [x] RE-996 Recover timed mode10 self-recovery ([evidence](research/QVM_MOVE_SELF_RECOVERY.md)).
|
|
|
|
|
|
|
|
|
| 2021 |
- [x] RE-995 Port meter completion and captured thaw effects ([evidence](research/RUST_MOVE_METER.md)).
|
| 2022 |
|
| 2023 |
- [x] RE-996 Recover timed mode10 self-recovery ([evidence](research/QVM_MOVE_SELF_RECOVERY.md)).
|
| 2024 |
+
|
| 2025 |
+
- [x] RE-997 Port timed self-recovery with atomic state updates ([evidence](research/RUST_MOVE_SELF_RECOVERY.md)).
|
docs/research/README.md
CHANGED
|
@@ -1555,3 +1555,5 @@ The extension collector adds five focused tests for native tail calls, command-r
|
|
| 1555 |
- [RE-995: Port meter completion and captured thaw effects](RUST_MOVE_METER.md).
|
| 1556 |
|
| 1557 |
- [RE-996: Recover timed mode10 self-recovery](QVM_MOVE_SELF_RECOVERY.md).
|
|
|
|
|
|
|
|
|
| 1555 |
- [RE-995: Port meter completion and captured thaw effects](RUST_MOVE_METER.md).
|
| 1556 |
|
| 1557 |
- [RE-996: Recover timed mode10 self-recovery](QVM_MOVE_SELF_RECOVERY.md).
|
| 1558 |
+
|
| 1559 |
+
- [RE-997: Port timed self-recovery with atomic state updates](RUST_MOVE_SELF_RECOVERY.md).
|
docs/research/RUST_MOVE_SELF_RECOVERY.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Port timed self-recovery with atomic state updates
|
| 2 |
+
|
| 3 |
+
RE-997. Focused validation: `cargo xtask test-group rust-move-self-recovery`. [Machine report](rust-move-self-recovery.json).
|
| 4 |
+
|
| 5 |
+
Rust ports actual self-recovery gates, wrapped signed elapsed time, staged f32 progress and the meter child across36 source cases. Admission exits preserve state without reading unused float configuration. Active invalid duration, nonfinite progress or unsupported conversion reject without advancing clock or committing meter/event changes. Unit tests cover wrapped elapsed time, inactive NaN preservation and late-error rollback.
|
docs/research/rust-health-impulse.json
CHANGED
|
@@ -2985,7 +2985,7 @@
|
|
| 2985 |
"exit_code": 2
|
| 2986 |
}
|
| 2987 |
],
|
| 2988 |
-
"rust_unit_tests":
|
| 2989 |
"source_report": "docs/research/qvm-health-impulse.json",
|
| 2990 |
"source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
|
| 2991 |
}
|
|
|
|
| 2985 |
"exit_code": 2
|
| 2986 |
}
|
| 2987 |
],
|
| 2988 |
+
"rust_unit_tests": 253,
|
| 2989 |
"source_report": "docs/research/qvm-health-impulse.json",
|
| 2990 |
"source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
|
| 2991 |
}
|
docs/research/rust-move-self-recovery.json
ADDED
|
@@ -0,0 +1,1159 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"limits": "Finite source/Rust contract parity; native time/file/network replies remain supplied or captured.",
|
| 3 |
+
"probes": [
|
| 4 |
+
{
|
| 5 |
+
"rust": {
|
| 6 |
+
"carry_bits": 0,
|
| 7 |
+
"event_entity": [
|
| 8 |
+
7,
|
| 9 |
+
2147483649
|
| 10 |
+
],
|
| 11 |
+
"events": [],
|
| 12 |
+
"flags104": 2147483666,
|
| 13 |
+
"flags220": 2147508226,
|
| 14 |
+
"last": 10000,
|
| 15 |
+
"meter": 6400,
|
| 16 |
+
"pm_type": 4,
|
| 17 |
+
"receiver": 999
|
| 18 |
+
},
|
| 19 |
+
"source": {
|
| 20 |
+
"carry_bits": 0,
|
| 21 |
+
"event_entity": [
|
| 22 |
+
7,
|
| 23 |
+
2147483649
|
| 24 |
+
],
|
| 25 |
+
"events": [],
|
| 26 |
+
"flags104": 2147483666,
|
| 27 |
+
"flags220": 2147508226,
|
| 28 |
+
"last": 10000,
|
| 29 |
+
"meter": 6400,
|
| 30 |
+
"pm_type": 4,
|
| 31 |
+
"receiver": 999
|
| 32 |
+
}
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"rust": {
|
| 36 |
+
"carry_bits": 0,
|
| 37 |
+
"event_entity": [
|
| 38 |
+
7,
|
| 39 |
+
2147483649
|
| 40 |
+
],
|
| 41 |
+
"events": [],
|
| 42 |
+
"flags104": 2147483666,
|
| 43 |
+
"flags220": 2147508226,
|
| 44 |
+
"last": 10000,
|
| 45 |
+
"meter": 1600,
|
| 46 |
+
"pm_type": 4,
|
| 47 |
+
"receiver": 999
|
| 48 |
+
},
|
| 49 |
+
"source": {
|
| 50 |
+
"carry_bits": 0,
|
| 51 |
+
"event_entity": [
|
| 52 |
+
7,
|
| 53 |
+
2147483649
|
| 54 |
+
],
|
| 55 |
+
"events": [],
|
| 56 |
+
"flags104": 2147483666,
|
| 57 |
+
"flags220": 2147508226,
|
| 58 |
+
"last": 10000,
|
| 59 |
+
"meter": 1600,
|
| 60 |
+
"pm_type": 4,
|
| 61 |
+
"receiver": 999
|
| 62 |
+
}
|
| 63 |
+
},
|
| 64 |
+
{
|
| 65 |
+
"rust": {
|
| 66 |
+
"carry_bits": 0,
|
| 67 |
+
"event_entity": [
|
| 68 |
+
7,
|
| 69 |
+
2147483649
|
| 70 |
+
],
|
| 71 |
+
"events": [],
|
| 72 |
+
"flags104": 2147483666,
|
| 73 |
+
"flags220": 2147508226,
|
| 74 |
+
"last": 10000,
|
| 75 |
+
"meter": 0,
|
| 76 |
+
"pm_type": 4,
|
| 77 |
+
"receiver": 999
|
| 78 |
+
},
|
| 79 |
+
"source": {
|
| 80 |
+
"carry_bits": 0,
|
| 81 |
+
"event_entity": [
|
| 82 |
+
7,
|
| 83 |
+
2147483649
|
| 84 |
+
],
|
| 85 |
+
"events": [],
|
| 86 |
+
"flags104": 2147483666,
|
| 87 |
+
"flags220": 2147508226,
|
| 88 |
+
"last": 10000,
|
| 89 |
+
"meter": 0,
|
| 90 |
+
"pm_type": 4,
|
| 91 |
+
"receiver": 999
|
| 92 |
+
}
|
| 93 |
+
},
|
| 94 |
+
{
|
| 95 |
+
"rust": {
|
| 96 |
+
"carry_bits": 1056964608,
|
| 97 |
+
"event_entity": [
|
| 98 |
+
7,
|
| 99 |
+
2147483649
|
| 100 |
+
],
|
| 101 |
+
"events": [],
|
| 102 |
+
"flags104": 2147483666,
|
| 103 |
+
"flags220": 2147508226,
|
| 104 |
+
"last": 9900,
|
| 105 |
+
"meter": 0,
|
| 106 |
+
"pm_type": 4,
|
| 107 |
+
"receiver": 999
|
| 108 |
+
},
|
| 109 |
+
"source": {
|
| 110 |
+
"carry_bits": 1056964608,
|
| 111 |
+
"event_entity": [
|
| 112 |
+
7,
|
| 113 |
+
2147483649
|
| 114 |
+
],
|
| 115 |
+
"events": [],
|
| 116 |
+
"flags104": 2147483666,
|
| 117 |
+
"flags220": 2147508226,
|
| 118 |
+
"last": 9900,
|
| 119 |
+
"meter": 0,
|
| 120 |
+
"pm_type": 4,
|
| 121 |
+
"receiver": 999
|
| 122 |
+
}
|
| 123 |
+
},
|
| 124 |
+
{
|
| 125 |
+
"rust": {
|
| 126 |
+
"carry_bits": 1056964608,
|
| 127 |
+
"event_entity": [
|
| 128 |
+
7,
|
| 129 |
+
2147483649
|
| 130 |
+
],
|
| 131 |
+
"events": [],
|
| 132 |
+
"flags104": 2147483666,
|
| 133 |
+
"flags220": 2147508226,
|
| 134 |
+
"last": 9900,
|
| 135 |
+
"meter": 0,
|
| 136 |
+
"pm_type": 4,
|
| 137 |
+
"receiver": 999
|
| 138 |
+
},
|
| 139 |
+
"source": {
|
| 140 |
+
"carry_bits": 1056964608,
|
| 141 |
+
"event_entity": [
|
| 142 |
+
7,
|
| 143 |
+
2147483649
|
| 144 |
+
],
|
| 145 |
+
"events": [],
|
| 146 |
+
"flags104": 2147483666,
|
| 147 |
+
"flags220": 2147508226,
|
| 148 |
+
"last": 9900,
|
| 149 |
+
"meter": 0,
|
| 150 |
+
"pm_type": 4,
|
| 151 |
+
"receiver": 999
|
| 152 |
+
}
|
| 153 |
+
},
|
| 154 |
+
{
|
| 155 |
+
"rust": {
|
| 156 |
+
"carry_bits": 1056964608,
|
| 157 |
+
"event_entity": [
|
| 158 |
+
7,
|
| 159 |
+
2147483649
|
| 160 |
+
],
|
| 161 |
+
"events": [],
|
| 162 |
+
"flags104": 2147483666,
|
| 163 |
+
"flags220": 2147508226,
|
| 164 |
+
"last": 9900,
|
| 165 |
+
"meter": 0,
|
| 166 |
+
"pm_type": 4,
|
| 167 |
+
"receiver": 999
|
| 168 |
+
},
|
| 169 |
+
"source": {
|
| 170 |
+
"carry_bits": 1056964608,
|
| 171 |
+
"event_entity": [
|
| 172 |
+
7,
|
| 173 |
+
2147483649
|
| 174 |
+
],
|
| 175 |
+
"events": [],
|
| 176 |
+
"flags104": 2147483666,
|
| 177 |
+
"flags220": 2147508226,
|
| 178 |
+
"last": 9900,
|
| 179 |
+
"meter": 0,
|
| 180 |
+
"pm_type": 4,
|
| 181 |
+
"receiver": 999
|
| 182 |
+
}
|
| 183 |
+
},
|
| 184 |
+
{
|
| 185 |
+
"rust": {
|
| 186 |
+
"carry_bits": 1056964608,
|
| 187 |
+
"event_entity": [
|
| 188 |
+
7,
|
| 189 |
+
2147483649
|
| 190 |
+
],
|
| 191 |
+
"events": [],
|
| 192 |
+
"flags104": 2147483666,
|
| 193 |
+
"flags220": 2147508226,
|
| 194 |
+
"last": 9900,
|
| 195 |
+
"meter": 0,
|
| 196 |
+
"pm_type": 4,
|
| 197 |
+
"receiver": 999
|
| 198 |
+
},
|
| 199 |
+
"source": {
|
| 200 |
+
"carry_bits": 1056964608,
|
| 201 |
+
"event_entity": [
|
| 202 |
+
7,
|
| 203 |
+
2147483649
|
| 204 |
+
],
|
| 205 |
+
"events": [],
|
| 206 |
+
"flags104": 2147483666,
|
| 207 |
+
"flags220": 2147508226,
|
| 208 |
+
"last": 9900,
|
| 209 |
+
"meter": 0,
|
| 210 |
+
"pm_type": 4,
|
| 211 |
+
"receiver": 999
|
| 212 |
+
}
|
| 213 |
+
},
|
| 214 |
+
{
|
| 215 |
+
"rust": {
|
| 216 |
+
"carry_bits": 1056964608,
|
| 217 |
+
"event_entity": [
|
| 218 |
+
7,
|
| 219 |
+
2147483649
|
| 220 |
+
],
|
| 221 |
+
"events": [],
|
| 222 |
+
"flags104": 2147483666,
|
| 223 |
+
"flags220": 2147508226,
|
| 224 |
+
"last": 9900,
|
| 225 |
+
"meter": 0,
|
| 226 |
+
"pm_type": 4,
|
| 227 |
+
"receiver": 999
|
| 228 |
+
},
|
| 229 |
+
"source": {
|
| 230 |
+
"carry_bits": 1056964608,
|
| 231 |
+
"event_entity": [
|
| 232 |
+
7,
|
| 233 |
+
2147483649
|
| 234 |
+
],
|
| 235 |
+
"events": [],
|
| 236 |
+
"flags104": 2147483666,
|
| 237 |
+
"flags220": 2147508226,
|
| 238 |
+
"last": 9900,
|
| 239 |
+
"meter": 0,
|
| 240 |
+
"pm_type": 4,
|
| 241 |
+
"receiver": 999
|
| 242 |
+
}
|
| 243 |
+
},
|
| 244 |
+
{
|
| 245 |
+
"rust": {
|
| 246 |
+
"carry_bits": 1056964608,
|
| 247 |
+
"event_entity": [
|
| 248 |
+
7,
|
| 249 |
+
2147483649
|
| 250 |
+
],
|
| 251 |
+
"events": [],
|
| 252 |
+
"flags104": 2147483666,
|
| 253 |
+
"flags220": 2147508226,
|
| 254 |
+
"last": 9900,
|
| 255 |
+
"meter": 0,
|
| 256 |
+
"pm_type": 4,
|
| 257 |
+
"receiver": 999
|
| 258 |
+
},
|
| 259 |
+
"source": {
|
| 260 |
+
"carry_bits": 1056964608,
|
| 261 |
+
"event_entity": [
|
| 262 |
+
7,
|
| 263 |
+
2147483649
|
| 264 |
+
],
|
| 265 |
+
"events": [],
|
| 266 |
+
"flags104": 2147483666,
|
| 267 |
+
"flags220": 2147508226,
|
| 268 |
+
"last": 9900,
|
| 269 |
+
"meter": 0,
|
| 270 |
+
"pm_type": 4,
|
| 271 |
+
"receiver": 999
|
| 272 |
+
}
|
| 273 |
+
},
|
| 274 |
+
{
|
| 275 |
+
"rust": {
|
| 276 |
+
"carry_bits": 1056964608,
|
| 277 |
+
"event_entity": [
|
| 278 |
+
7,
|
| 279 |
+
2147483649
|
| 280 |
+
],
|
| 281 |
+
"events": [],
|
| 282 |
+
"flags104": 2147483666,
|
| 283 |
+
"flags220": 2147508226,
|
| 284 |
+
"last": 9900,
|
| 285 |
+
"meter": 0,
|
| 286 |
+
"pm_type": 4,
|
| 287 |
+
"receiver": 999
|
| 288 |
+
},
|
| 289 |
+
"source": {
|
| 290 |
+
"carry_bits": 1056964608,
|
| 291 |
+
"event_entity": [
|
| 292 |
+
7,
|
| 293 |
+
2147483649
|
| 294 |
+
],
|
| 295 |
+
"events": [],
|
| 296 |
+
"flags104": 2147483666,
|
| 297 |
+
"flags220": 2147508226,
|
| 298 |
+
"last": 9900,
|
| 299 |
+
"meter": 0,
|
| 300 |
+
"pm_type": 4,
|
| 301 |
+
"receiver": 999
|
| 302 |
+
}
|
| 303 |
+
},
|
| 304 |
+
{
|
| 305 |
+
"rust": {
|
| 306 |
+
"carry_bits": 1056964608,
|
| 307 |
+
"event_entity": [
|
| 308 |
+
7,
|
| 309 |
+
2147483649
|
| 310 |
+
],
|
| 311 |
+
"events": [],
|
| 312 |
+
"flags104": 2147483666,
|
| 313 |
+
"flags220": 2147508226,
|
| 314 |
+
"last": 9900,
|
| 315 |
+
"meter": 0,
|
| 316 |
+
"pm_type": 4,
|
| 317 |
+
"receiver": 999
|
| 318 |
+
},
|
| 319 |
+
"source": {
|
| 320 |
+
"carry_bits": 1056964608,
|
| 321 |
+
"event_entity": [
|
| 322 |
+
7,
|
| 323 |
+
2147483649
|
| 324 |
+
],
|
| 325 |
+
"events": [],
|
| 326 |
+
"flags104": 2147483666,
|
| 327 |
+
"flags220": 2147508226,
|
| 328 |
+
"last": 9900,
|
| 329 |
+
"meter": 0,
|
| 330 |
+
"pm_type": 4,
|
| 331 |
+
"receiver": 999
|
| 332 |
+
}
|
| 333 |
+
},
|
| 334 |
+
{
|
| 335 |
+
"rust": {
|
| 336 |
+
"carry_bits": 1056964608,
|
| 337 |
+
"event_entity": [
|
| 338 |
+
7,
|
| 339 |
+
2147483649
|
| 340 |
+
],
|
| 341 |
+
"events": [],
|
| 342 |
+
"flags104": 2147483666,
|
| 343 |
+
"flags220": 2147508226,
|
| 344 |
+
"last": 9900,
|
| 345 |
+
"meter": 0,
|
| 346 |
+
"pm_type": 4,
|
| 347 |
+
"receiver": 999
|
| 348 |
+
},
|
| 349 |
+
"source": {
|
| 350 |
+
"carry_bits": 1056964608,
|
| 351 |
+
"event_entity": [
|
| 352 |
+
7,
|
| 353 |
+
2147483649
|
| 354 |
+
],
|
| 355 |
+
"events": [],
|
| 356 |
+
"flags104": 2147483666,
|
| 357 |
+
"flags220": 2147508226,
|
| 358 |
+
"last": 9900,
|
| 359 |
+
"meter": 0,
|
| 360 |
+
"pm_type": 4,
|
| 361 |
+
"receiver": 999
|
| 362 |
+
}
|
| 363 |
+
},
|
| 364 |
+
{
|
| 365 |
+
"rust": {
|
| 366 |
+
"carry_bits": 1056964608,
|
| 367 |
+
"event_entity": [
|
| 368 |
+
7,
|
| 369 |
+
2147483649
|
| 370 |
+
],
|
| 371 |
+
"events": [],
|
| 372 |
+
"flags104": 2147483666,
|
| 373 |
+
"flags220": 2147508226,
|
| 374 |
+
"last": 9900,
|
| 375 |
+
"meter": 0,
|
| 376 |
+
"pm_type": 4,
|
| 377 |
+
"receiver": 999
|
| 378 |
+
},
|
| 379 |
+
"source": {
|
| 380 |
+
"carry_bits": 1056964608,
|
| 381 |
+
"event_entity": [
|
| 382 |
+
7,
|
| 383 |
+
2147483649
|
| 384 |
+
],
|
| 385 |
+
"events": [],
|
| 386 |
+
"flags104": 2147483666,
|
| 387 |
+
"flags220": 2147508226,
|
| 388 |
+
"last": 9900,
|
| 389 |
+
"meter": 0,
|
| 390 |
+
"pm_type": 4,
|
| 391 |
+
"receiver": 999
|
| 392 |
+
}
|
| 393 |
+
},
|
| 394 |
+
{
|
| 395 |
+
"rust": {
|
| 396 |
+
"carry_bits": 1056964608,
|
| 397 |
+
"event_entity": [
|
| 398 |
+
7,
|
| 399 |
+
2147483649
|
| 400 |
+
],
|
| 401 |
+
"events": [],
|
| 402 |
+
"flags104": 2147483666,
|
| 403 |
+
"flags220": 2147508226,
|
| 404 |
+
"last": 9900,
|
| 405 |
+
"meter": 0,
|
| 406 |
+
"pm_type": 4,
|
| 407 |
+
"receiver": 999
|
| 408 |
+
},
|
| 409 |
+
"source": {
|
| 410 |
+
"carry_bits": 1056964608,
|
| 411 |
+
"event_entity": [
|
| 412 |
+
7,
|
| 413 |
+
2147483649
|
| 414 |
+
],
|
| 415 |
+
"events": [],
|
| 416 |
+
"flags104": 2147483666,
|
| 417 |
+
"flags220": 2147508226,
|
| 418 |
+
"last": 9900,
|
| 419 |
+
"meter": 0,
|
| 420 |
+
"pm_type": 4,
|
| 421 |
+
"receiver": 999
|
| 422 |
+
}
|
| 423 |
+
},
|
| 424 |
+
{
|
| 425 |
+
"rust": {
|
| 426 |
+
"carry_bits": 1056964608,
|
| 427 |
+
"event_entity": [
|
| 428 |
+
7,
|
| 429 |
+
2147483649
|
| 430 |
+
],
|
| 431 |
+
"events": [],
|
| 432 |
+
"flags104": 2147483666,
|
| 433 |
+
"flags220": 2147508226,
|
| 434 |
+
"last": 9900,
|
| 435 |
+
"meter": 0,
|
| 436 |
+
"pm_type": 4,
|
| 437 |
+
"receiver": 999
|
| 438 |
+
},
|
| 439 |
+
"source": {
|
| 440 |
+
"carry_bits": 1056964608,
|
| 441 |
+
"event_entity": [
|
| 442 |
+
7,
|
| 443 |
+
2147483649
|
| 444 |
+
],
|
| 445 |
+
"events": [],
|
| 446 |
+
"flags104": 2147483666,
|
| 447 |
+
"flags220": 2147508226,
|
| 448 |
+
"last": 9900,
|
| 449 |
+
"meter": 0,
|
| 450 |
+
"pm_type": 4,
|
| 451 |
+
"receiver": 999
|
| 452 |
+
}
|
| 453 |
+
},
|
| 454 |
+
{
|
| 455 |
+
"rust": {
|
| 456 |
+
"carry_bits": 1056964608,
|
| 457 |
+
"event_entity": [
|
| 458 |
+
7,
|
| 459 |
+
2147483649
|
| 460 |
+
],
|
| 461 |
+
"events": [],
|
| 462 |
+
"flags104": 2147483666,
|
| 463 |
+
"flags220": 2147508226,
|
| 464 |
+
"last": 9900,
|
| 465 |
+
"meter": 0,
|
| 466 |
+
"pm_type": 4,
|
| 467 |
+
"receiver": 999
|
| 468 |
+
},
|
| 469 |
+
"source": {
|
| 470 |
+
"carry_bits": 1056964608,
|
| 471 |
+
"event_entity": [
|
| 472 |
+
7,
|
| 473 |
+
2147483649
|
| 474 |
+
],
|
| 475 |
+
"events": [],
|
| 476 |
+
"flags104": 2147483666,
|
| 477 |
+
"flags220": 2147508226,
|
| 478 |
+
"last": 9900,
|
| 479 |
+
"meter": 0,
|
| 480 |
+
"pm_type": 4,
|
| 481 |
+
"receiver": 999
|
| 482 |
+
}
|
| 483 |
+
},
|
| 484 |
+
{
|
| 485 |
+
"rust": {
|
| 486 |
+
"carry_bits": 1056964608,
|
| 487 |
+
"event_entity": [
|
| 488 |
+
7,
|
| 489 |
+
2147483649
|
| 490 |
+
],
|
| 491 |
+
"events": [],
|
| 492 |
+
"flags104": 2147483666,
|
| 493 |
+
"flags220": 2147508226,
|
| 494 |
+
"last": 9900,
|
| 495 |
+
"meter": 0,
|
| 496 |
+
"pm_type": 4,
|
| 497 |
+
"receiver": 999
|
| 498 |
+
},
|
| 499 |
+
"source": {
|
| 500 |
+
"carry_bits": 1056964608,
|
| 501 |
+
"event_entity": [
|
| 502 |
+
7,
|
| 503 |
+
2147483649
|
| 504 |
+
],
|
| 505 |
+
"events": [],
|
| 506 |
+
"flags104": 2147483666,
|
| 507 |
+
"flags220": 2147508226,
|
| 508 |
+
"last": 9900,
|
| 509 |
+
"meter": 0,
|
| 510 |
+
"pm_type": 4,
|
| 511 |
+
"receiver": 999
|
| 512 |
+
}
|
| 513 |
+
},
|
| 514 |
+
{
|
| 515 |
+
"rust": {
|
| 516 |
+
"carry_bits": 1056964608,
|
| 517 |
+
"event_entity": [
|
| 518 |
+
7,
|
| 519 |
+
2147483649
|
| 520 |
+
],
|
| 521 |
+
"events": [],
|
| 522 |
+
"flags104": 2147483666,
|
| 523 |
+
"flags220": 2147508226,
|
| 524 |
+
"last": 9900,
|
| 525 |
+
"meter": 0,
|
| 526 |
+
"pm_type": 4,
|
| 527 |
+
"receiver": 999
|
| 528 |
+
},
|
| 529 |
+
"source": {
|
| 530 |
+
"carry_bits": 1056964608,
|
| 531 |
+
"event_entity": [
|
| 532 |
+
7,
|
| 533 |
+
2147483649
|
| 534 |
+
],
|
| 535 |
+
"events": [],
|
| 536 |
+
"flags104": 2147483666,
|
| 537 |
+
"flags220": 2147508226,
|
| 538 |
+
"last": 9900,
|
| 539 |
+
"meter": 0,
|
| 540 |
+
"pm_type": 4,
|
| 541 |
+
"receiver": 999
|
| 542 |
+
}
|
| 543 |
+
},
|
| 544 |
+
{
|
| 545 |
+
"rust": {
|
| 546 |
+
"carry_bits": 1056964608,
|
| 547 |
+
"event_entity": [
|
| 548 |
+
7,
|
| 549 |
+
2147483649
|
| 550 |
+
],
|
| 551 |
+
"events": [],
|
| 552 |
+
"flags104": 2147483666,
|
| 553 |
+
"flags220": 2147508226,
|
| 554 |
+
"last": 9900,
|
| 555 |
+
"meter": 0,
|
| 556 |
+
"pm_type": 4,
|
| 557 |
+
"receiver": 999
|
| 558 |
+
},
|
| 559 |
+
"source": {
|
| 560 |
+
"carry_bits": 1056964608,
|
| 561 |
+
"event_entity": [
|
| 562 |
+
7,
|
| 563 |
+
2147483649
|
| 564 |
+
],
|
| 565 |
+
"events": [],
|
| 566 |
+
"flags104": 2147483666,
|
| 567 |
+
"flags220": 2147508226,
|
| 568 |
+
"last": 9900,
|
| 569 |
+
"meter": 0,
|
| 570 |
+
"pm_type": 4,
|
| 571 |
+
"receiver": 999
|
| 572 |
+
}
|
| 573 |
+
},
|
| 574 |
+
{
|
| 575 |
+
"rust": {
|
| 576 |
+
"carry_bits": 1056964608,
|
| 577 |
+
"event_entity": [
|
| 578 |
+
7,
|
| 579 |
+
2147483649
|
| 580 |
+
],
|
| 581 |
+
"events": [],
|
| 582 |
+
"flags104": 2147483666,
|
| 583 |
+
"flags220": 2147508226,
|
| 584 |
+
"last": 9900,
|
| 585 |
+
"meter": 0,
|
| 586 |
+
"pm_type": 4,
|
| 587 |
+
"receiver": 999
|
| 588 |
+
},
|
| 589 |
+
"source": {
|
| 590 |
+
"carry_bits": 1056964608,
|
| 591 |
+
"event_entity": [
|
| 592 |
+
7,
|
| 593 |
+
2147483649
|
| 594 |
+
],
|
| 595 |
+
"events": [],
|
| 596 |
+
"flags104": 2147483666,
|
| 597 |
+
"flags220": 2147508226,
|
| 598 |
+
"last": 9900,
|
| 599 |
+
"meter": 0,
|
| 600 |
+
"pm_type": 4,
|
| 601 |
+
"receiver": 999
|
| 602 |
+
}
|
| 603 |
+
},
|
| 604 |
+
{
|
| 605 |
+
"rust": {
|
| 606 |
+
"carry_bits": 1056964608,
|
| 607 |
+
"event_entity": [
|
| 608 |
+
7,
|
| 609 |
+
2147483649
|
| 610 |
+
],
|
| 611 |
+
"events": [],
|
| 612 |
+
"flags104": 2147483666,
|
| 613 |
+
"flags220": 2147508226,
|
| 614 |
+
"last": 9900,
|
| 615 |
+
"meter": 0,
|
| 616 |
+
"pm_type": 4,
|
| 617 |
+
"receiver": 999
|
| 618 |
+
},
|
| 619 |
+
"source": {
|
| 620 |
+
"carry_bits": 1056964608,
|
| 621 |
+
"event_entity": [
|
| 622 |
+
7,
|
| 623 |
+
2147483649
|
| 624 |
+
],
|
| 625 |
+
"events": [],
|
| 626 |
+
"flags104": 2147483666,
|
| 627 |
+
"flags220": 2147508226,
|
| 628 |
+
"last": 9900,
|
| 629 |
+
"meter": 0,
|
| 630 |
+
"pm_type": 4,
|
| 631 |
+
"receiver": 999
|
| 632 |
+
}
|
| 633 |
+
},
|
| 634 |
+
{
|
| 635 |
+
"rust": {
|
| 636 |
+
"carry_bits": 1056964608,
|
| 637 |
+
"event_entity": [
|
| 638 |
+
7,
|
| 639 |
+
2147483649
|
| 640 |
+
],
|
| 641 |
+
"events": [],
|
| 642 |
+
"flags104": 2147483666,
|
| 643 |
+
"flags220": 8192,
|
| 644 |
+
"last": 9900,
|
| 645 |
+
"meter": 0,
|
| 646 |
+
"pm_type": 4,
|
| 647 |
+
"receiver": 999
|
| 648 |
+
},
|
| 649 |
+
"source": {
|
| 650 |
+
"carry_bits": 1056964608,
|
| 651 |
+
"event_entity": [
|
| 652 |
+
7,
|
| 653 |
+
2147483649
|
| 654 |
+
],
|
| 655 |
+
"events": [],
|
| 656 |
+
"flags104": 2147483666,
|
| 657 |
+
"flags220": 8192,
|
| 658 |
+
"last": 9900,
|
| 659 |
+
"meter": 0,
|
| 660 |
+
"pm_type": 4,
|
| 661 |
+
"receiver": 999
|
| 662 |
+
}
|
| 663 |
+
},
|
| 664 |
+
{
|
| 665 |
+
"rust": {
|
| 666 |
+
"carry_bits": 1056964608,
|
| 667 |
+
"event_entity": [
|
| 668 |
+
7,
|
| 669 |
+
2147483649
|
| 670 |
+
],
|
| 671 |
+
"events": [],
|
| 672 |
+
"flags104": 2147483666,
|
| 673 |
+
"flags220": 8192,
|
| 674 |
+
"last": 9900,
|
| 675 |
+
"meter": 0,
|
| 676 |
+
"pm_type": 4,
|
| 677 |
+
"receiver": 999
|
| 678 |
+
},
|
| 679 |
+
"source": {
|
| 680 |
+
"carry_bits": 1056964608,
|
| 681 |
+
"event_entity": [
|
| 682 |
+
7,
|
| 683 |
+
2147483649
|
| 684 |
+
],
|
| 685 |
+
"events": [],
|
| 686 |
+
"flags104": 2147483666,
|
| 687 |
+
"flags220": 8192,
|
| 688 |
+
"last": 9900,
|
| 689 |
+
"meter": 0,
|
| 690 |
+
"pm_type": 4,
|
| 691 |
+
"receiver": 999
|
| 692 |
+
}
|
| 693 |
+
},
|
| 694 |
+
{
|
| 695 |
+
"rust": {
|
| 696 |
+
"carry_bits": 1056964608,
|
| 697 |
+
"event_entity": [
|
| 698 |
+
7,
|
| 699 |
+
2147483649
|
| 700 |
+
],
|
| 701 |
+
"events": [],
|
| 702 |
+
"flags104": 2147483666,
|
| 703 |
+
"flags220": 8192,
|
| 704 |
+
"last": 9900,
|
| 705 |
+
"meter": 0,
|
| 706 |
+
"pm_type": 4,
|
| 707 |
+
"receiver": 999
|
| 708 |
+
},
|
| 709 |
+
"source": {
|
| 710 |
+
"carry_bits": 1056964608,
|
| 711 |
+
"event_entity": [
|
| 712 |
+
7,
|
| 713 |
+
2147483649
|
| 714 |
+
],
|
| 715 |
+
"events": [],
|
| 716 |
+
"flags104": 2147483666,
|
| 717 |
+
"flags220": 8192,
|
| 718 |
+
"last": 9900,
|
| 719 |
+
"meter": 0,
|
| 720 |
+
"pm_type": 4,
|
| 721 |
+
"receiver": 999
|
| 722 |
+
}
|
| 723 |
+
},
|
| 724 |
+
{
|
| 725 |
+
"rust": {
|
| 726 |
+
"carry_bits": 0,
|
| 727 |
+
"event_entity": [
|
| 728 |
+
7,
|
| 729 |
+
2147483649
|
| 730 |
+
],
|
| 731 |
+
"events": [],
|
| 732 |
+
"flags104": 2147483666,
|
| 733 |
+
"flags220": 2147508226,
|
| 734 |
+
"last": 9900,
|
| 735 |
+
"meter": 0,
|
| 736 |
+
"pm_type": 4,
|
| 737 |
+
"receiver": 999
|
| 738 |
+
},
|
| 739 |
+
"source": {
|
| 740 |
+
"carry_bits": 0,
|
| 741 |
+
"event_entity": [
|
| 742 |
+
7,
|
| 743 |
+
2147483649
|
| 744 |
+
],
|
| 745 |
+
"events": [],
|
| 746 |
+
"flags104": 2147483666,
|
| 747 |
+
"flags220": 2147508226,
|
| 748 |
+
"last": 9900,
|
| 749 |
+
"meter": 0,
|
| 750 |
+
"pm_type": 4,
|
| 751 |
+
"receiver": 999
|
| 752 |
+
}
|
| 753 |
+
},
|
| 754 |
+
{
|
| 755 |
+
"rust": {
|
| 756 |
+
"carry_bits": 0,
|
| 757 |
+
"event_entity": [
|
| 758 |
+
7,
|
| 759 |
+
2147483649
|
| 760 |
+
],
|
| 761 |
+
"events": [],
|
| 762 |
+
"flags104": 2147483666,
|
| 763 |
+
"flags220": 2147508226,
|
| 764 |
+
"last": 9900,
|
| 765 |
+
"meter": 0,
|
| 766 |
+
"pm_type": 4,
|
| 767 |
+
"receiver": 999
|
| 768 |
+
},
|
| 769 |
+
"source": {
|
| 770 |
+
"carry_bits": 0,
|
| 771 |
+
"event_entity": [
|
| 772 |
+
7,
|
| 773 |
+
2147483649
|
| 774 |
+
],
|
| 775 |
+
"events": [],
|
| 776 |
+
"flags104": 2147483666,
|
| 777 |
+
"flags220": 2147508226,
|
| 778 |
+
"last": 9900,
|
| 779 |
+
"meter": 0,
|
| 780 |
+
"pm_type": 4,
|
| 781 |
+
"receiver": 999
|
| 782 |
+
}
|
| 783 |
+
},
|
| 784 |
+
{
|
| 785 |
+
"rust": {
|
| 786 |
+
"carry_bits": 0,
|
| 787 |
+
"event_entity": [
|
| 788 |
+
7,
|
| 789 |
+
2147483649
|
| 790 |
+
],
|
| 791 |
+
"events": [],
|
| 792 |
+
"flags104": 2147483666,
|
| 793 |
+
"flags220": 2147508226,
|
| 794 |
+
"last": 9900,
|
| 795 |
+
"meter": 1700,
|
| 796 |
+
"pm_type": 4,
|
| 797 |
+
"receiver": 999
|
| 798 |
+
},
|
| 799 |
+
"source": {
|
| 800 |
+
"carry_bits": 0,
|
| 801 |
+
"event_entity": [
|
| 802 |
+
7,
|
| 803 |
+
2147483649
|
| 804 |
+
],
|
| 805 |
+
"events": [],
|
| 806 |
+
"flags104": 2147483666,
|
| 807 |
+
"flags220": 2147508226,
|
| 808 |
+
"last": 9900,
|
| 809 |
+
"meter": 1700,
|
| 810 |
+
"pm_type": 4,
|
| 811 |
+
"receiver": 999
|
| 812 |
+
}
|
| 813 |
+
},
|
| 814 |
+
{
|
| 815 |
+
"rust": {
|
| 816 |
+
"carry_bits": 0,
|
| 817 |
+
"event_entity": [
|
| 818 |
+
7,
|
| 819 |
+
2147483649
|
| 820 |
+
],
|
| 821 |
+
"events": [],
|
| 822 |
+
"flags104": 2147483666,
|
| 823 |
+
"flags220": 2147508226,
|
| 824 |
+
"last": 10,
|
| 825 |
+
"meter": 1664,
|
| 826 |
+
"pm_type": 4,
|
| 827 |
+
"receiver": 999
|
| 828 |
+
},
|
| 829 |
+
"source": {
|
| 830 |
+
"carry_bits": 0,
|
| 831 |
+
"event_entity": [
|
| 832 |
+
7,
|
| 833 |
+
2147483649
|
| 834 |
+
],
|
| 835 |
+
"events": [],
|
| 836 |
+
"flags104": 2147483666,
|
| 837 |
+
"flags220": 2147508226,
|
| 838 |
+
"last": 10,
|
| 839 |
+
"meter": 1664,
|
| 840 |
+
"pm_type": 4,
|
| 841 |
+
"receiver": 999
|
| 842 |
+
}
|
| 843 |
+
},
|
| 844 |
+
{
|
| 845 |
+
"rust": {
|
| 846 |
+
"carry_bits": 0,
|
| 847 |
+
"event_entity": [
|
| 848 |
+
7,
|
| 849 |
+
2147483649
|
| 850 |
+
],
|
| 851 |
+
"events": [],
|
| 852 |
+
"flags104": 2147483666,
|
| 853 |
+
"flags220": 2147508226,
|
| 854 |
+
"last": 10,
|
| 855 |
+
"meter": 416,
|
| 856 |
+
"pm_type": 4,
|
| 857 |
+
"receiver": 999
|
| 858 |
+
},
|
| 859 |
+
"source": {
|
| 860 |
+
"carry_bits": 0,
|
| 861 |
+
"event_entity": [
|
| 862 |
+
7,
|
| 863 |
+
2147483649
|
| 864 |
+
],
|
| 865 |
+
"events": [],
|
| 866 |
+
"flags104": 2147483666,
|
| 867 |
+
"flags220": 2147508226,
|
| 868 |
+
"last": 10,
|
| 869 |
+
"meter": 416,
|
| 870 |
+
"pm_type": 4,
|
| 871 |
+
"receiver": 999
|
| 872 |
+
}
|
| 873 |
+
},
|
| 874 |
+
{
|
| 875 |
+
"rust": {
|
| 876 |
+
"carry_bits": 0,
|
| 877 |
+
"event_entity": [
|
| 878 |
+
7,
|
| 879 |
+
2147483649
|
| 880 |
+
],
|
| 881 |
+
"events": [],
|
| 882 |
+
"flags104": 2147483666,
|
| 883 |
+
"flags220": 2147508226,
|
| 884 |
+
"last": 10,
|
| 885 |
+
"meter": 0,
|
| 886 |
+
"pm_type": 4,
|
| 887 |
+
"receiver": 999
|
| 888 |
+
},
|
| 889 |
+
"source": {
|
| 890 |
+
"carry_bits": 0,
|
| 891 |
+
"event_entity": [
|
| 892 |
+
7,
|
| 893 |
+
2147483649
|
| 894 |
+
],
|
| 895 |
+
"events": [],
|
| 896 |
+
"flags104": 2147483666,
|
| 897 |
+
"flags220": 2147508226,
|
| 898 |
+
"last": 10,
|
| 899 |
+
"meter": 0,
|
| 900 |
+
"pm_type": 4,
|
| 901 |
+
"receiver": 999
|
| 902 |
+
}
|
| 903 |
+
},
|
| 904 |
+
{
|
| 905 |
+
"rust": {
|
| 906 |
+
"carry_bits": 0,
|
| 907 |
+
"event_entity": [
|
| 908 |
+
7,
|
| 909 |
+
2147483649
|
| 910 |
+
],
|
| 911 |
+
"events": [],
|
| 912 |
+
"flags104": 2147483666,
|
| 913 |
+
"flags220": 2147508226,
|
| 914 |
+
"last": 10000,
|
| 915 |
+
"meter": 31999,
|
| 916 |
+
"pm_type": 4,
|
| 917 |
+
"receiver": 999
|
| 918 |
+
},
|
| 919 |
+
"source": {
|
| 920 |
+
"carry_bits": 0,
|
| 921 |
+
"event_entity": [
|
| 922 |
+
7,
|
| 923 |
+
2147483649
|
| 924 |
+
],
|
| 925 |
+
"events": [],
|
| 926 |
+
"flags104": 2147483666,
|
| 927 |
+
"flags220": 2147508226,
|
| 928 |
+
"last": 10000,
|
| 929 |
+
"meter": 31999,
|
| 930 |
+
"pm_type": 4,
|
| 931 |
+
"receiver": 999
|
| 932 |
+
}
|
| 933 |
+
},
|
| 934 |
+
{
|
| 935 |
+
"rust": {
|
| 936 |
+
"carry_bits": 0,
|
| 937 |
+
"event_entity": [
|
| 938 |
+
7,
|
| 939 |
+
2147483649
|
| 940 |
+
],
|
| 941 |
+
"events": [],
|
| 942 |
+
"flags104": 2147483666,
|
| 943 |
+
"flags220": 2147508226,
|
| 944 |
+
"last": 10000,
|
| 945 |
+
"meter": 31999,
|
| 946 |
+
"pm_type": 4,
|
| 947 |
+
"receiver": 999
|
| 948 |
+
},
|
| 949 |
+
"source": {
|
| 950 |
+
"carry_bits": 0,
|
| 951 |
+
"event_entity": [
|
| 952 |
+
7,
|
| 953 |
+
2147483649
|
| 954 |
+
],
|
| 955 |
+
"events": [],
|
| 956 |
+
"flags104": 2147483666,
|
| 957 |
+
"flags220": 2147508226,
|
| 958 |
+
"last": 10000,
|
| 959 |
+
"meter": 31999,
|
| 960 |
+
"pm_type": 4,
|
| 961 |
+
"receiver": 999
|
| 962 |
+
}
|
| 963 |
+
},
|
| 964 |
+
{
|
| 965 |
+
"rust": {
|
| 966 |
+
"carry_bits": 0,
|
| 967 |
+
"event_entity": [
|
| 968 |
+
7,
|
| 969 |
+
2147483649
|
| 970 |
+
],
|
| 971 |
+
"events": [],
|
| 972 |
+
"flags104": 2147483666,
|
| 973 |
+
"flags220": 2147508226,
|
| 974 |
+
"last": 10000,
|
| 975 |
+
"meter": 31999,
|
| 976 |
+
"pm_type": 4,
|
| 977 |
+
"receiver": 999
|
| 978 |
+
},
|
| 979 |
+
"source": {
|
| 980 |
+
"carry_bits": 0,
|
| 981 |
+
"event_entity": [
|
| 982 |
+
7,
|
| 983 |
+
2147483649
|
| 984 |
+
],
|
| 985 |
+
"events": [],
|
| 986 |
+
"flags104": 2147483666,
|
| 987 |
+
"flags220": 2147508226,
|
| 988 |
+
"last": 10000,
|
| 989 |
+
"meter": 31999,
|
| 990 |
+
"pm_type": 4,
|
| 991 |
+
"receiver": 999
|
| 992 |
+
}
|
| 993 |
+
},
|
| 994 |
+
{
|
| 995 |
+
"rust": {
|
| 996 |
+
"carry_bits": 0,
|
| 997 |
+
"event_entity": [
|
| 998 |
+
305419896,
|
| 999 |
+
2147483681
|
| 1000 |
+
],
|
| 1001 |
+
"events": [
|
| 1002 |
+
{
|
| 1003 |
+
"event": 107,
|
| 1004 |
+
"op": "event"
|
| 1005 |
+
},
|
| 1006 |
+
{
|
| 1007 |
+
"format": "436c69656e744d656c7465643a2025690a",
|
| 1008 |
+
"op": "log",
|
| 1009 |
+
"slots": [
|
| 1010 |
+
2
|
| 1011 |
+
]
|
| 1012 |
+
}
|
| 1013 |
+
],
|
| 1014 |
+
"flags104": 2147483650,
|
| 1015 |
+
"flags220": 2147491842,
|
| 1016 |
+
"last": 10000,
|
| 1017 |
+
"meter": 0,
|
| 1018 |
+
"pm_type": 0,
|
| 1019 |
+
"receiver": 999
|
| 1020 |
+
},
|
| 1021 |
+
"source": {
|
| 1022 |
+
"carry_bits": 0,
|
| 1023 |
+
"event_entity": [
|
| 1024 |
+
305419896,
|
| 1025 |
+
2147483681
|
| 1026 |
+
],
|
| 1027 |
+
"events": [
|
| 1028 |
+
{
|
| 1029 |
+
"event": 107,
|
| 1030 |
+
"op": "event"
|
| 1031 |
+
},
|
| 1032 |
+
{
|
| 1033 |
+
"format": "436c69656e744d656c7465643a2025690a",
|
| 1034 |
+
"op": "log",
|
| 1035 |
+
"slots": [
|
| 1036 |
+
2
|
| 1037 |
+
]
|
| 1038 |
+
}
|
| 1039 |
+
],
|
| 1040 |
+
"flags104": 2147483650,
|
| 1041 |
+
"flags220": 2147491842,
|
| 1042 |
+
"last": 10000,
|
| 1043 |
+
"meter": 0,
|
| 1044 |
+
"pm_type": 0,
|
| 1045 |
+
"receiver": 999
|
| 1046 |
+
}
|
| 1047 |
+
},
|
| 1048 |
+
{
|
| 1049 |
+
"rust": {
|
| 1050 |
+
"carry_bits": 0,
|
| 1051 |
+
"event_entity": [
|
| 1052 |
+
305419896,
|
| 1053 |
+
2147483681
|
| 1054 |
+
],
|
| 1055 |
+
"events": [
|
| 1056 |
+
{
|
| 1057 |
+
"event": 107,
|
| 1058 |
+
"op": "event"
|
| 1059 |
+
},
|
| 1060 |
+
{
|
| 1061 |
+
"format": "436c69656e744d656c7465643a2025690a",
|
| 1062 |
+
"op": "log",
|
| 1063 |
+
"slots": [
|
| 1064 |
+
2
|
| 1065 |
+
]
|
| 1066 |
+
}
|
| 1067 |
+
],
|
| 1068 |
+
"flags104": 2147483650,
|
| 1069 |
+
"flags220": 2147491842,
|
| 1070 |
+
"last": 10000,
|
| 1071 |
+
"meter": 0,
|
| 1072 |
+
"pm_type": 0,
|
| 1073 |
+
"receiver": 999
|
| 1074 |
+
},
|
| 1075 |
+
"source": {
|
| 1076 |
+
"carry_bits": 0,
|
| 1077 |
+
"event_entity": [
|
| 1078 |
+
305419896,
|
| 1079 |
+
2147483681
|
| 1080 |
+
],
|
| 1081 |
+
"events": [
|
| 1082 |
+
{
|
| 1083 |
+
"event": 107,
|
| 1084 |
+
"op": "event"
|
| 1085 |
+
},
|
| 1086 |
+
{
|
| 1087 |
+
"format": "436c69656e744d656c7465643a2025690a",
|
| 1088 |
+
"op": "log",
|
| 1089 |
+
"slots": [
|
| 1090 |
+
2
|
| 1091 |
+
]
|
| 1092 |
+
}
|
| 1093 |
+
],
|
| 1094 |
+
"flags104": 2147483650,
|
| 1095 |
+
"flags220": 2147491842,
|
| 1096 |
+
"last": 10000,
|
| 1097 |
+
"meter": 0,
|
| 1098 |
+
"pm_type": 0,
|
| 1099 |
+
"receiver": 999
|
| 1100 |
+
}
|
| 1101 |
+
},
|
| 1102 |
+
{
|
| 1103 |
+
"rust": {
|
| 1104 |
+
"carry_bits": 0,
|
| 1105 |
+
"event_entity": [
|
| 1106 |
+
305419896,
|
| 1107 |
+
2147483681
|
| 1108 |
+
],
|
| 1109 |
+
"events": [
|
| 1110 |
+
{
|
| 1111 |
+
"event": 107,
|
| 1112 |
+
"op": "event"
|
| 1113 |
+
},
|
| 1114 |
+
{
|
| 1115 |
+
"format": "436c69656e744d656c7465643a2025690a",
|
| 1116 |
+
"op": "log",
|
| 1117 |
+
"slots": [
|
| 1118 |
+
2
|
| 1119 |
+
]
|
| 1120 |
+
}
|
| 1121 |
+
],
|
| 1122 |
+
"flags104": 2147483650,
|
| 1123 |
+
"flags220": 2147491842,
|
| 1124 |
+
"last": 10000,
|
| 1125 |
+
"meter": 0,
|
| 1126 |
+
"pm_type": 0,
|
| 1127 |
+
"receiver": 999
|
| 1128 |
+
},
|
| 1129 |
+
"source": {
|
| 1130 |
+
"carry_bits": 0,
|
| 1131 |
+
"event_entity": [
|
| 1132 |
+
305419896,
|
| 1133 |
+
2147483681
|
| 1134 |
+
],
|
| 1135 |
+
"events": [
|
| 1136 |
+
{
|
| 1137 |
+
"event": 107,
|
| 1138 |
+
"op": "event"
|
| 1139 |
+
},
|
| 1140 |
+
{
|
| 1141 |
+
"format": "436c69656e744d656c7465643a2025690a",
|
| 1142 |
+
"op": "log",
|
| 1143 |
+
"slots": [
|
| 1144 |
+
2
|
| 1145 |
+
]
|
| 1146 |
+
}
|
| 1147 |
+
],
|
| 1148 |
+
"flags104": 2147483650,
|
| 1149 |
+
"flags220": 2147491842,
|
| 1150 |
+
"last": 10000,
|
| 1151 |
+
"meter": 0,
|
| 1152 |
+
"pm_type": 0,
|
| 1153 |
+
"receiver": 999
|
| 1154 |
+
}
|
| 1155 |
+
}
|
| 1156 |
+
],
|
| 1157 |
+
"source_report": "docs/research/qvm-move-self-recovery.json",
|
| 1158 |
+
"source_report_sha256": "118327982d7e3a2ef47541b42879ed0c53319931df4cfb526ac6f045ca8b6b59"
|
| 1159 |
+
}
|
scripts/analyze_rust_move_self_recovery.py
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Compare recovered Rust policy with original QVM fixtures."""
|
| 2 |
+
import hashlib,json,os,subprocess
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from analyze_qvm import write_json
|
| 5 |
+
from rust_lifecycle_support import result
|
| 6 |
+
|
| 7 |
+
def main():
|
| 8 |
+
subprocess.run(['cargo','build','--offline','--package','urt-gameplay','--bin','urt-move-callbacks'],check=True,capture_output=True)
|
| 9 |
+
binary=Path(os.environ.get('CARGO_TARGET_DIR','target'))/'debug'/'urt-move-callbacks'
|
| 10 |
+
path=Path('docs/research/qvm-move-self-recovery.json');data=path.read_bytes();probes=[]
|
| 11 |
+
for p in json.loads(data)['probes']:
|
| 12 |
+
probes.append(dict(source={k:p[k] for k in ['meter', 'carry_bits', 'flags220', 'flags104', 'pm_type', 'receiver', 'event_entity', 'events', 'last']},rust=result(binary,'self',encode(p['input']))))
|
| 13 |
+
write_json(Path('docs/research/rust-move-self-recovery.json'),dict(source_report=str(path),source_report_sha256=hashlib.sha256(data).hexdigest(),probes=probes,limits='Finite source/Rust contract parity; native time/file/network replies remain supplied or captured.'))
|
| 14 |
+
|
| 15 |
+
def encode(a):
|
| 16 |
+
from analyze_qvm_acceleration import word
|
| 17 |
+
return [a['entity'],a['client'],a['mode'],a['connection'],a['health'],a['follow'],a['flags220'],a['flags104'],a['pm_type'],word(a['seconds']),a['meter'],word(a['carry']),a['tick'],a['last'],1,0]
|
| 18 |
+
if __name__=='__main__':main()
|
scripts/test_rust_move_self_recovery.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import hashlib,json,unittest
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
class PortTests(unittest.TestCase):
|
| 4 |
+
def test_original_parity(self):
|
| 5 |
+
r=json.loads(Path('docs/research/rust-move-self-recovery.json').read_text());self.assertGreaterEqual(len(r['probes']),12)
|
| 6 |
+
for p in r['probes']:self.assertEqual(p['source'],p['rust'])
|
| 7 |
+
def test_identity(self):
|
| 8 |
+
r=json.loads(Path('docs/research/rust-move-self-recovery.json').read_text());self.assertEqual(hashlib.sha256(Path(r['source_report']).read_bytes()).hexdigest(),r['source_report_sha256'])
|
| 9 |
+
if __name__=='__main__':unittest.main()
|
xtask/checks.tsv
CHANGED
|
@@ -3848,3 +3848,29 @@ report scripts/analyze_qvm_move_self_recovery.py docs/research/qvm-move-self-rec
|
|
| 3848 |
edge docs/research/qvm-move-self-recovery.json scripts/test_qvm_move_self_recovery.py
|
| 3849 |
group qvm-move-self-recovery scripts/analyze_qvm_move_self_recovery.py
|
| 3850 |
edge scripts/analyze_qvm_move_self_recovery.py scripts/analyze_qvm_resumer_audit.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3848 |
edge docs/research/qvm-move-self-recovery.json scripts/test_qvm_move_self_recovery.py
|
| 3849 |
group qvm-move-self-recovery scripts/analyze_qvm_move_self_recovery.py
|
| 3850 |
edge scripts/analyze_qvm_move_self_recovery.py scripts/analyze_qvm_resumer_audit.py
|
| 3851 |
+
report scripts/analyze_rust_move_self_recovery.py docs/research/rust-move-self-recovery.json
|
| 3852 |
+
edge docs/research/rust-move-self-recovery.json scripts/test_rust_move_self_recovery.py
|
| 3853 |
+
group rust-move-self-recovery scripts/analyze_rust_move_self_recovery.py
|
| 3854 |
+
edge scripts/analyze_rust_move_self_recovery.py scripts/analyze_qvm_resumer_audit.py
|
| 3855 |
+
edge Cargo.toml scripts/analyze_rust_move_self_recovery.py
|
| 3856 |
+
edge Cargo.lock scripts/analyze_rust_move_self_recovery.py
|
| 3857 |
+
edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_move_self_recovery.py
|
| 3858 |
+
edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_move_self_recovery.py
|
| 3859 |
+
edge crates/urt-gameplay/src/filter_loading.rs scripts/analyze_rust_move_self_recovery.py
|
| 3860 |
+
edge crates/urt-gameplay/src/filter_lifecycle.rs scripts/analyze_rust_move_self_recovery.py
|
| 3861 |
+
edge crates/urt-gameplay/src/native_policy.rs scripts/analyze_rust_move_self_recovery.py
|
| 3862 |
+
edge crates/urt-gameplay/src/bin/urt-filter-loading.rs scripts/analyze_rust_move_self_recovery.py
|
| 3863 |
+
edge crates/urt-gameplay/src/qvm_format.rs scripts/analyze_rust_move_self_recovery.py
|
| 3864 |
+
edge docs/research/qvm-move-self-recovery.json scripts/analyze_rust_move_self_recovery.py
|
| 3865 |
+
group rust-move-self-recovery scripts/analyze_rust_health_impulse.py
|
| 3866 |
+
group gameplay scripts/analyze_rust_move_self_recovery.py
|
| 3867 |
+
edge crates/urt-gameplay/src/filter_commands.rs scripts/analyze_rust_move_self_recovery.py
|
| 3868 |
+
edge crates/urt-gameplay/src/bin/urt-filter-commands.rs scripts/analyze_rust_move_self_recovery.py
|
| 3869 |
+
edge crates/urt-gameplay/src/client_timer.rs scripts/analyze_rust_move_self_recovery.py
|
| 3870 |
+
edge crates/urt-gameplay/src/bin/urt-client-timer.rs scripts/analyze_rust_move_self_recovery.py
|
| 3871 |
+
edge crates/urt-gameplay/src/client_processing.rs scripts/analyze_rust_move_self_recovery.py
|
| 3872 |
+
edge crates/urt-gameplay/src/bin/urt-client-processing.rs scripts/analyze_rust_move_self_recovery.py
|
| 3873 |
+
edge crates/urt-gameplay/src/client_move_context.rs scripts/analyze_rust_move_self_recovery.py
|
| 3874 |
+
edge crates/urt-gameplay/src/bin/urt-client-move-context.rs scripts/analyze_rust_move_self_recovery.py
|
| 3875 |
+
edge crates/urt-gameplay/src/move_callbacks.rs scripts/analyze_rust_move_self_recovery.py
|
| 3876 |
+
edge crates/urt-gameplay/src/bin/urt-move-callbacks.rs scripts/analyze_rust_move_self_recovery.py
|
xtask/src/lib.rs
CHANGED
|
@@ -1137,6 +1137,7 @@ mod integration_tests {
|
|
| 1137 |
("client_move_context", "client_move_context"),
|
| 1138 |
("client_move_context", "client_move_assembly"),
|
| 1139 |
("move_callbacks", "move_meter"),
|
|
|
|
| 1140 |
("client_move_context", "client_move_scratch"),
|
| 1141 |
("client_processing", "client_routing"),
|
| 1142 |
("client_timer", "client_routing"),
|
|
@@ -1356,6 +1357,7 @@ mod integration_tests {
|
|
| 1356 |
("qvm-client-move-context", "client_move_context"),
|
| 1357 |
("qvm-client-move-assembly", "client_move_assembly"),
|
| 1358 |
("qvm-move-meter", "move_meter"),
|
|
|
|
| 1359 |
("qvm-client-move-scratch", "client_move_scratch"),
|
| 1360 |
("qvm-client-routing", "client_routing"),
|
| 1361 |
("qvm-client-command-rewrite", "client_command_rewrite"),
|
|
|
|
| 1137 |
("client_move_context", "client_move_context"),
|
| 1138 |
("client_move_context", "client_move_assembly"),
|
| 1139 |
("move_callbacks", "move_meter"),
|
| 1140 |
+
("move_callbacks", "move_self_recovery"),
|
| 1141 |
("client_move_context", "client_move_scratch"),
|
| 1142 |
("client_processing", "client_routing"),
|
| 1143 |
("client_timer", "client_routing"),
|
|
|
|
| 1357 |
("qvm-client-move-context", "client_move_context"),
|
| 1358 |
("qvm-client-move-assembly", "client_move_assembly"),
|
| 1359 |
("qvm-move-meter", "move_meter"),
|
| 1360 |
+
("qvm-move-self-recovery", "move_self_recovery"),
|
| 1361 |
("qvm-client-move-scratch", "client_move_scratch"),
|
| 1362 |
("qvm-client-routing", "client_routing"),
|
| 1363 |
("qvm-client-command-rewrite", "client_command_rewrite"),
|