Skip to content

Conditional jump or move based on uninitialized variable (and potential SEGV).... #58529

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
khareatu opened this issue Feb 17, 2019 · 9 comments

Comments

@khareatu
Copy link

Gist

  1. Incorrect code gen causes a conditional jump based on load of data from uninitialized memory location on the stack.
  2. Issue was reproduced on release builds on both x64 and ARM64 with Rust stable 1.32
  3. Issue can be mitigated by restricting codegen-units to 1 (and using a nightly build)
  4. Issue can be observed under valgrind / gdb. Note that the code generated by abstract common patterns in AST formatters #3 is very similar, but there's a control flow change that prevents the code path for Thread a session or semantic context through IL #1 from being executed
  5. Issue is likely related to an observed SEGV in 100% safe Rust code

Background:

This was discovered during our attempt to root cause an inexplicable SEGV error in 100% safe Rust code. The short version is that the SEGV was being caused by a the corruption of a doubly linked list structure used by malloc() and the structure was ostensibly corrupted when the pointer was somehow overwritten. Since the issue made absolutely no sense, we tried to distill it down and were surprised when valgrind showed that our test code resulted in a conditional execution based on uninitialized data.

** Error and analysis **

  1. valgrind error
    valgrind --track-origins=yes target/release/bug_repro
    ...
    ==32239== Conditional jump or move depends on uninitialised value(s)
    ==32239== at 0x113B86: <serde_cbor::de::Deserializer>::parse_map
    ==32239== by 0x10E16A: <serde_cbor::de::Deserializer>::parse_value
    ==32239== by 0x10CB27: serde_cbor::de::from_slice
    ==32239== by 0x114AFC: bug_repro::main
    ...
    ==32239== Uninitialised value was created by a stack allocation
    ==32239== at 0x1137B3: <serde_cbor::de::Deserializer>::parse_map (in /home/ANT.AMAZON.COM/khareatu/kaos/Carbon2/src/UGMH/target/release/bug_repro)

  2. We can validate the above by the following with gdb:
    (gdb) info functions parse_map
    0x00000000001137c0 <serde_cbor::de::Deserializer>::parse_map
    (gdb) disas 0x1137c0
    Dump of assembler code for function ZN46$LT$serde_cbor..de..Deserializer$LT$R$GT$$GT$9parse_map17h2e6263b3d6f0a8b5E:
    ...
    0x00000000001137ca <+10>: sub $0xf8,%rsp => Stack frame is allocated here
    0x00000000001137d1 <+17>: mov %rsi,%r13 => We set a break point on this instruction

Breakpoint 2, 0x00000000001137d1 in <serde_cbor::de::Deserializer>::parse_map ()
(gdb) info registers
...
rsp 0x1ffefff6d0 0x1ffefff6d0

valgrind shows that uninitialized data will be located at a future point in the program:

0x0000000000113b6f <+943>: mov 0x90(%rsp),%rsi => Load happens here
0x0000000000113b77 <+951>: cmp $0x1,%r12
...
0x0000000000113b8b <+971>: test %rsi,%rsi
0x0000000000113b8e <+974>: mov 0x80(%rsp),%rbp
0x0000000000113b96 <+982>: je 0x113bbd => Jump based on the above load

We can dump the random bytes allocated on the stack and set a break on 0x113b8e:

(gdb) x/4xg 0x1ffefff6d0+0x90
0x1ffefff760: 0x00000000042289f0 0x0000000004044000
0x1ffefff770: 0x0000000004028440 0x0000000004028930
(gdb) x/xg 42289f0
break *0x113b8e
continue
.... => We break following the load of rsi from [rsp+0x90]
0x0000000000113b96 in <serde_cbor::de::Deserializer>::parse_map ()
(gdb) info registers
....
rsi 0x42289f0 69372400

We can see that this is the same random value @ [rsp+0x90] on the stack frame. In fact, we can further verify this by changing the value in [rsp+0x90] to some other value to ensure that it's not initialized later in the control flow.

bug_repro.gz

@nikic
Copy link
Contributor

nikic commented Feb 17, 2019

Issue can be mitigated by restricting codegen-units to 1 (and using a nightly build)

If a nightly build fixes this, then this was likely an optimization bug fixed by the recent LLVM update, in which case it's probably not worth investigating this further.

bug_repro.gz

What format is this file in? Despite the extension, this does not seem to be a gzip file. At least it is not accepted by gunzip.

@khareatu
Copy link
Author

khareatu commented Feb 17, 2019

I have pasted the repro file below.

A couple of comments:

  1. Regarding:

If a nightly build fixes this, then this was likely an optimization bug fixed by the recent LLVM update, in > which case it's probably not worth investigating this further.

valgrind is happy only if code is compiled with codegen-units=1 in .cargo/config (and the -Z config-profile option which requires a nightly build). Without the "-Z config-file" option and "codegen-units=1", valgrind is still unhappy with the generated code even on the latest nightly.

  1. It's possible that the issue is related to "Conditional jump or move depends on uninitialised value(s)" on feature(generator) #47253 since the repro is using the Option type. It's a little curious that the "codegen-units=1" prevents the uninitialized value from being loaded, but it's possible that the generated code flips the order in which the checks are generated (i.e., check for Option == None before loading the pointer value instead of the other way around).
[package]
name = "bug_repro"
version = "0.1.0"

[dependencies]
serde = "1.0.27"
serde_cbor = "0.8"
serde_derive = "1.0.79"

src/main.rs

extern crate serde;
extern crate serde_cbor;
#[macro_use]
extern crate serde_derive;

#[derive(Serialize, Deserialize)]
pub struct MyType {
    #[serde(rename = "streamName")]
    pub stream_name: Option<String>,
}

fn main() {
let cbor : &[u8] = &[0xa2, 0x6f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0xf6, 0x72, 0x73, 
0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x98, 0x29, 0xa4, 
0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x6e, 0x44, 0x72, 0x6f, 0x70, 0x6c, 0x69, 0x74, 0x65, 
0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 
0x6d, 0x65, 0x68, 0x64, 0x72, 0x6f, 0x70, 0x6c, 0x69, 0x74, 0x65, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 
0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 
0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 
0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 
0x69, 0x76, 0x65, 0x01, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x62, 0x6c, 0x65, 
0x61, 0x74, 0x64, 0x2e, 0x6c, 0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 
0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 
0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 
0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x98, 0x38, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 
0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0xa7, 0x71, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 
0x61, 0x6d, 0x65, 0x70, 0x70, 0x63, 0x69, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 
0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 
0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 
0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 
0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 
0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 
0x22, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x75, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x2d, 
0x72, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x2d, 0x62, 0x69, 0x6e, 0x2e, 0x6c, 0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 
0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 
0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 
0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 
0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x04, 0x7e, 0xa4, 0x6a, 0x73, 
0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x69, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x6c, 0x6f, 0x67, 0x6f, 
0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 
0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 
0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 
0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 
0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x09, 0xa4, 
0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2e, 0x6c, 
0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 
0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 
0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 
0x73, 0x69, 0x76, 0x65, 0x1a, 0x00, 0x01, 0x18, 0x45, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 
0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 
0x75, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x00, 0x01, 0x25, 0x4e, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 
0x6d, 0x65, 0x6f, 0x63, 0x6f, 0x61, 0x70, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x6c, 0x6f, 0x67, 0x6f, 0x61, 
0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 
0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 
0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 
0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 
0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x02, 0xa4, 0x6a, 
0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x78, 0x1e, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x2d, 0x62, 0x61, 
0x64, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x2e, 0x6c, 
0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 
0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 
0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 
0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 
0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 
0x65, 0x19, 0x07, 0x7c, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x63, 0x6f, 0x6d, 
0x6d, 0x6f, 0x6e, 0x2e, 0x6c, 0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 
0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 
0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 
0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x90, 0x23, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 
0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x9f, 0xe4, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 
0x61, 0x6d, 0x65, 0x72, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x6c, 
0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 
0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 
0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 
0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 
0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 
0x65, 0x09, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x61, 0x63, 0x63, 0x65, 0x73, 
0x73, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x6c, 0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 
0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 
0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x00, 0x0b, 0x4e, 
0xc0, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 
0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x00, 0x0b, 
0x5e, 0x85, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x78, 0x18, 0x63, 0x6f, 0x61, 0x70, 
0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x6c, 0x6f, 0x67, 
0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 
0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 
0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 
0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 
0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x02, 
0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x6b, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x79, 0x64, 
0x2e, 0x6c, 0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 
0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 
0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 
0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0xa1, 0x7c, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 
0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 
0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0xab, 0x77, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 
0x68, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 
0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 
0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 
0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x00, 0x01, 0xb1, 0xce, 0x78, 0x22, 0x69, 0x74, 
0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 
0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x00, 0x01, 0xc0, 0x96, 0xa4, 0x6a, 0x73, 
0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x67, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x6f, 0x61, 0x70, 
0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 
0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 
0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 
0xf8, 0x52, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 
0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x00, 
0x01, 0x06, 0xc2, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x6b, 0x70, 0x65, 0x74, 0x72, 
0x69, 0x66, 0x79, 0x2e, 0x6c, 0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 
0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 
0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 
0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x00, 0x06, 0xe3, 0x59, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 
0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 
0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x00, 0x06, 0xeb, 0x82, 0xa4, 0x6a, 0x73, 0x74, 0x72, 
0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x2d, 0x70, 0x69, 0x6e, 
0x67, 0x64, 0x2e, 0x6c, 0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 
0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x50, 0x14, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 
0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 
0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x59, 0x81, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 
0x6d, 0x65, 0x76, 0x64, 0x72, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 
0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 
0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 
0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 
0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 
0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 
0x73, 0x69, 0x76, 0x65, 0x19, 0x07, 0x6c, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x72, 
0x6d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 
0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 
0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 
0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 
0x19, 0x58, 0x0d, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 
0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 
0x60, 0x97, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x75, 0x6b, 0x65, 0x79, 0x73, 0x74, 
0x6f, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 
0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 
0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 
0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 
0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 
0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x07, 0x78, 0xa4, 0x6a, 
0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x6c, 0x61, 0x6c, 0x5f, 0x64, 0x6d, 0x65, 0x73, 0x67, 0x2e, 
0x6c, 0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 
0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 
0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 
0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 
0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 
0x76, 0x65, 0x18, 0x5c, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x78, 0x2b, 0x63, 0x61, 
0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 
0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 
0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 
0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 
0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 
0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 
0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 
0x19, 0x07, 0x77, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x65, 0x74, 0x72, 
0x69, 0x66, 0x79, 0x2d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 
0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 
0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 
0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 
0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x07, 0x62, 0xa4, 0x6a, 0x73, 
0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 
0x72, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 
0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 
0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 
0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 
0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x07, 0x77, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 
0x61, 0x6d, 0x65, 0x6c, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x6c, 0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 
0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 
0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 
0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 
0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 
0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x07, 0x76, 0xa4, 0x6a, 
0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x79, 0x5f, 0x6d, 0x65, 
0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 
0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 
0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 
0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 
0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x01, 0x7f, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 
0x4e, 0x61, 0x6d, 0x65, 0x78, 0x1b, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 
0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 
0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 
0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 
0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 
0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x01, 0x7f, 0xa4, 0x6a, 0x73, 0x74, 0x72, 
0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x78, 0x1c, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x61, 0x67, 
0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 
0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 
0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 
0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 
0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 
0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x01, 0x7c, 0xa4, 
0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x77, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x64, 
0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 
0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 
0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 
0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 
0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x01, 0x7c, 0xa4, 0x6a, 0x73, 
0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x70, 0x76, 0x32, 0x2d, 0x6c, 0x6f, 0x67, 0x2d, 0x73, 0x69, 0x7a, 
0x65, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 
0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 
0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 
0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x01, 0x7e, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 
0x78, 0x1b, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x65, 0x74, 
0x72, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 
0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 
0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 
0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 
0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x0a, 0x6c, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 
0x61, 0x6d, 0x65, 0x77, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 
0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 
0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 
0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 
0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 
0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 
0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x19, 0x01, 0x7e, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 
0x65, 0x78, 0x1e, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x2d, 0x6f, 0x6c, 0x64, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2d, 
0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x2e, 0x6c, 0x6f, 0x67, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 
0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 
0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 
0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 
0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x81, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 
0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x64, 0x72, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 
0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 
0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 
0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 
0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x80, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x77, 
0x63, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x2e, 0x6a, 
0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 
0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 
0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 
0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 
0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 
0x76, 0x65, 0x18, 0x21, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x70, 0x63, 
0x65, 0x61, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 
0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 
0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 
0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 
0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x21, 0xa4, 0x6a, 0x73, 0x74, 
0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x71, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 
0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 
0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 
0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 
0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x21, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x78, 
0x19, 0x70, 0x65, 0x74, 0x72, 0x69, 0x66, 0x79, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x2d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 
0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 
0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 
0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 
0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x20, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x77, 
0x69, 0x32, 0x63, 0x2d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6a, 
0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 
0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 
0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 
0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 
0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 
0x76, 0x65, 0x02, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x69, 0x6c, 0x73, 0x68, 0x77, 
0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 
0x65, 0x6a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 
0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 
0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 
0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 
0x73, 0x69, 0x76, 0x65, 0x02, 0xa4, 0x6a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x76, 0x64, 0x69, 
0x73, 0x6b, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 
0x6f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x6a, 0x6d, 0x6f, 0x6e, 
0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x78, 0x21, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 
0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 
0x76, 0x65, 0x00, 0x78, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 
0x62, 0x65, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x02];

    let _: Result<MyType, _> = serde_cbor::from_slice(&cbor);
}

src/mod.rs

#[macro_use]
extern crate serde_derive;

extern crate serde;
extern crate serde_cbor;

@khareatu
Copy link
Author

FWIW, a variant of the above test program results in an valgrind error of "Invalid write of size 8" on a stack based pointer. Interestingly enough, this happens only with the aarch64-unknown-linux-musl target and cannot be reproduced on the aarch64-unknown-linux-gnu target. I am trying to see if the same issue can be reproduced on x86_64-unknown-linux-musl, but setting up the environment will take some time.

Note that the SEGV was observed on an aarch64-unknown-linux-musl platform, but am not sure whether the "invalid write" is related.

@mennis
Copy link

mennis commented Feb 18, 2019

Attachment appears to be just a tarball not gzipped.

@khareatu
Copy link
Author

khareatu commented Feb 19, 2019

BTW, think we have tracked down the "invalid write of size 8" seems to be some sort of musl compatibility issue with the panic backtrace (or something along those lines). Since we don't see the "invalid write of size 8" on Alpine Linux (aarch64) with the same binary, it stands to reason that there's something different about about our platform musl that causes the issue. In any case, compiling the code with "panic=abort" gets rid that issue.

As noted, we do see "conditional jump..." or move error on multiple platforms, including x86_64.

@khareatu
Copy link
Author

FWIW, we believe that we have root-caused the issue. The bottom line is that there appears to be a bug in tokio that results in a double free of a memory allocated pointer, which eventually causes the musl library to SEGV on a NULL pointer. We haven't managed to boil it down to a simple repro case, so there's a little bit of a conjecture here, but the bottom line is that the issue went away after we switched to a single threaded tokio execution engine. Note that there's nothing inherently parallel in our code and we are using 100% safe Rust, so the corruption must be coming presumably from unsafe portions in other crates (most likely tokio in this case).

@jonas-schievink
Copy link
Contributor

@khareatu did you open a bug in the tokio tracker for this? This seems like a pretty bad bug.

@khareatu
Copy link
Author

khareatu commented Jul 29, 2019

Jonas-Schievink,
Mean culpa for not following through with the tokio team. Got side tracked with other things at work and since this was no longer in the radar with the workaround, just never got around to it. Anyway, thanks for the reminder... will follow up.

@jonas-schievink
Copy link
Contributor

Closing since this is not a bug on our end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants