Problem solved...

ANOQ of the Sun anoq@hardcoreprocessing.com
Sat, 03 Jun 2000 15:35:04 +0200


This is a multi-part message in MIME format.
--------------CBA93EB96730D9F52627BE47
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

"Stephen Weeks" wrote:
> I agree.  It looks windows specific.  My only guesses are that you
> need to use another flag/mode when opening the file or there is a bug
> in the posix emulation library you are linking with.

I asked the original developer of mingw32 - and he
told me about the (Windows specific) flags
O_TEXT and O_BINARY. If I just set O_BINARY
in the BinIO structure when opening a file
it all works great!

I have attached all relevant files (I hope).

I added the flags to the O structure in
posix/primitive.sml

I also added it to
posix/file-sys.sig

I added the O_TEXT and O_BINARY flags in
io/text-io.sml
io/bin-io.sml

Finally, I had to add some conditional
defines to
include/mlton-posix.h

which defines O_BINARY and O_TEXT for
non-win32 systems.

I'm not sure if these changes will break
any of the Posix stuff in the SML Basis
library for MLTon - but it seems to work
both under Unix and Win32.

However - I have just seen a couple of
disturbing things in my app compiled with
MLTon:

On Linux:
I have just seen the binary make a segmentation
fault on an unhandled exception in the ML code.
This should not happen - right? But of course
the unhandled exception was a bug in the
first place :)

On Win32:
I got an error saying:
unable to VirtualFree memory at <some address>

This happens in the Win32 code I modified.
Below is an exerpt of the relevant parts
of my gc.c.

However this problem went away when
I removed the debug printing messages -
so I'm not going to worry about this
for now.



#if defined(_WIN32)
// This is from the SML/NJ source...
 
void *alloc_vmem(int nb)
{
  void *p;
 
  p = (void *) VirtualAlloc(NULL,
                            nb,
                            MEM_COMMIT|MEM_RESERVE,
                            PAGE_EXECUTE_READWRITE);
  if (p == NULL) {
     die("VirtualAlloc failed on request of size %lx\n", nb);
  }
  return p;
}

/* free_vmem:
 * Return  memory to OS.
*/
void free_vmem (void *p)
{
  if (!VirtualFree((LPVOID)p,
                   0,
                   MEM_RELEASE)) {
     die("unable to VirtualFree memory at %lx\n", p);
  }
}
#endif

static void *smmap(size_t length) {
        void *result;
        
#if defined(_WIN32)
        result = alloc_vmem(length);
#else   
        result = mmap(NULL, length, PROT_READ | PROT_WRITE, 
                        MAP_PRIVATE | MAP_ANON, -1, 0);
#endif
        
        if (result == (void*)-1) die("mmap failed");
        
        return result;
}

static void smunmap(pointer base, size_t length) {
        if (0 == length)
                return;
#if defined(_WIN32)
        free_vmem(base);
#else
        if (0 != munmap(base, length))
                die("munmap failed");
#endif
}


Cheers
-- 
http://www.HardcoreProcessing.com


--------------CBA93EB96730D9F52627BE47
Content-Type: application/x-unknown-content-type-sml_auto_file;
 name="bin-io.sml"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="bin-io.sml"

KCogQ29weXJpZ2h0IChDKSAxOTk3LTE5OTkgTkVDIFJlc2VhcmNoIEluc3RpdHV0ZS4KICogUGxl
YXNlIHNlZSB0aGUgZmlsZSBMSUNFTlNFIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKikKc3Ry
dWN0dXJlIEJpbklPOiBCSU5fSU8gPQogICBzdHJ1Y3QKICAgICAgc3RydWN0dXJlIEZTID0gUG9z
aXguRmlsZVN5cwogICAgICBzdHJ1Y3R1cmUgUElPID0gUG9zaXguSU8KCSAKICAgICAgc3RydWN0
dXJlIEFycmF5ID0gV29yZDhBcnJheQogICAgICBzdHJ1Y3R1cmUgVmVjdG9yID0gV29yZDhWZWN0
b3IKCSAKICAgICAgdHlwZSB2ZWN0b3IgPSBWZWN0b3IudmVjdG9yCiAgICAgIHR5cGUgZWxlbSA9
IFZlY3Rvci5lbGVtCgogICAgICB2YWwgYnVmU2l6ZSA9IDQwOTYKCiAgICAgICgqLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKikKICAgICAgKCogICAg
ICAgICAgICAgICAgICAgICBvdXRzdHJlYW0gICAgICAgICAgICAgICAgICAgICAqKQogICAgICAo
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopCgog
ICAgICBkYXRhdHlwZSBidWYgPQoJIEJ1ZiBvZiB7c2l6ZTogaW50IHJlZiwKCQkgYXJyYXk6IEFy
cmF5LmFycmF5fQoKICAgICAgZnVuIGlzRnVsbChCdWZ7c2l6ZSwgLi4ufSkgPSAhc2l6ZSA9IGJ1
ZlNpemUKCiAgICAgICgqIHdyaXRlIG91dCB0byBmZCBzaXplIGJ5dGVzIG9mIGJ1ZiBzdGFydGlu
ZyBhdCBpbmRleCBpICopCiAgICAgIGZ1biBmbHVzaEdlbihmZDogRlMuZmlsZV9kZXNjLAoJCSAg
IGJ1ZjogJ2EsCgkJICAgaTogaW50LAoJCSAgIHNpemU6IGludCwKCQkgICB3cml0ZTogRlMuZmls
ZV9kZXNjICoge2J1ZjogJ2EsCgkJCQkJICAgaTogaW50LAoJCQkJCSAgIHN6OiBpbnQgb3B0aW9u
fSAtPiBpbnQpOiB1bml0ID0KCSBsZXQKCSAgICB2YWwgbWF4ID0gaSArIHNpemUKCSAgICBmdW4g
bG9vcCBpID0KCSAgICAgICBpZiBpID0gbWF4CgkJICB0aGVuICgpCgkgICAgICAgZWxzZQoJCSAg
bG9vcChpICsgd3JpdGUoZmQsIHtidWYgPSBidWYsCgkJCQkgICAgICBpID0gaSwKCQkJCSAgICAg
IHN6ID0gU09NRShtYXggLSBpKX0pKQoJIGluIGxvb3AgaQoJIGVuZAoKICAgICAgZnVuIGZsdXNo
KGZkLCBCdWZ7c2l6ZSwgYXJyYXl9KSA9CgkgKGZsdXNoR2VuKGZkLCBhcnJheSwgMCwgIXNpemUs
IFBJTy53cml0ZUFycikKCSAgOyBzaXplIDo9IDApCgkgCiAgICAgIGRhdGF0eXBlIGJ1ZlN0eWxl
ID0KCSBVbmJ1ZmZlcmVkCiAgICAgICB8IExpbmUgb2YgYnVmCiAgICAgICB8IEJ1ZmZlcmVkIG9m
IGJ1ZgoJIAogICAgICBkYXRhdHlwZSBvdXRzdHJlYW0nID0KCSBPdXQgb2Yge2ZkOiBGUy5maWxl
X2Rlc2MsCgkJIGNsb3NlZDogYm9vbCByZWYsCgkJIGJ1ZlN0eWxlOiBidWZTdHlsZX0KICAgICAg
dHlwZSBvdXRzdHJlYW0gPSBvdXRzdHJlYW0nIHJlZgoKICAgICAgdmFsIG1rT3V0c3RyZWFtID0g
cmVmCiAgICAgIHZhbCBnZXRPdXRzdHJlYW0gPSAhCiAgICAgIHZhbCBzZXRPdXRzdHJlYW0gPSBv
cCA6PQoJIAogICAgICBmdW4gZmx1c2hPdXQocmVmKE91dHtmZCwgYnVmU3R5bGUsIGNsb3NlZCwg
Li4ufSkpOiB1bml0ID0KCSAoY2FzZSAoIWNsb3NlZCwgYnVmU3R5bGUpIG9mCgkgICAgICh0cnVl
LCBfKSA9PiAoKQoJICAgfCAoXywgICAgVW5idWZmZXJlZCkgPT4gKCkKCSAgIHwgKF8sICAgIExp
bmUgYikgPT4gZmx1c2goZmQsIGIpCgkgICB8IChfLCAgICBCdWZmZXJlZCBiKSA9PiBmbHVzaChm
ZCwgYikpCgkgaGFuZGxlIGV4biA9PiByYWlzZSBJTy5Jb3tuYW1lID0gIjx1bmltcGxlbWVudGVk
PiIsCgkJCQkgICBmdW5jdGlvbiA9ICJmbHVzaE91dCIsCgkJCQkgICBjYXVzZSA9IGV4bn0KCiAg
ICAgIHZhbCBvcGVuT3V0czogb3V0c3RyZWFtIGxpc3QgcmVmID0gcmVmIFtdCgogICAgICBmdW4g
Y2xvc2VPdXQob3V0IGFzIHJlZihPdXR7ZmQsIGNsb3NlZCwgLi4ufSkpOiB1bml0ID0KCSBpZiAh
Y2xvc2VkIHRoZW4gKCkKCSBlbHNlIChmbHVzaE91dCBvdXQ7CgkgICAgICAgY2xvc2VkIDo9IHRy
dWU7CgkgICAgICAgUElPLmNsb3NlIGZkOwoJICAgICAgIG9wZW5PdXRzIDo9IExpc3QuZmlsdGVy
IChmbiBvdXQnID0+IG5vdChvdXQgPSBvdXQnKSkgKCFvcGVuT3V0cykpCgogICAgICB2YWwgbmV3
T3V0ID0KCSAoKCogVGhlc2Ugc2lkZS1lZmZlY3QgaXMgaGVyZSBzbyB0aGF0IHRoZSBkZWFkIGNv
ZGUgZWxpbWluYXRpb24gd29uJ3QKCSAgICogZ2V0IHJpZCBvZiBpdCBhcyBsb25nIGFzIG5ld091
dCBpcyB1c2VkCgkgICAqKQoJICBBdFNhdmVXb3JsZC5hZGROZXdDbGVhbmVyKGZuICgpID0+IExp
c3QuYXBwIGZsdXNoT3V0ICghb3Blbk91dHMpKTsKCSAgQXRFeGl0LmFkZE5ld0NsZWFuZXIKCSAg
KGZuICgpID0+CgkgICBMaXN0LmFwcAoJICAgKGZuIG91dCBhcyByZWYoT3V0e2ZkLC4uLn0pID0+
CgkgICAgKGZsdXNoT3V0IG91dDsKCSAgICAgaWYgZmQgPSBGUy5zdGRvdXQgb3JlbHNlIGZkID0g
RlMuc3RkZXJyCgkJdGhlbiAoKQoJICAgICBlbHNlIGNsb3NlT3V0IG91dCkpCgkgICAoIW9wZW5P
dXRzKSk7CgkgICgqIGVuZCBzdHVwaWRpdHkgKikKCSAgZm4gZmQgPT4KCSAgbGV0CgkgICAgIHZh
bCBidWZTdHlsZSA9CgkJaWYgZmQgPSBGUy5zdGRlcnIKCQkgICB0aGVuIFVuYnVmZmVyZWQKCQll
bHNlIChpZiBQb3NpeC5Qcm9jRW52LmlzYXR0eSBmZCB0aGVuIExpbmUgZWxzZSBCdWZmZXJlZCkK
CQkgICAoQnVme3NpemUgPSByZWYgMCwKCQkJYXJyYXkgPSBBcnJheS5hcnJheShidWZTaXplLCAw
dzApfSkKCSAgICAgdmFsIG91dCA9IHJlZihPdXR7ZmQgPSBmZCwKCQkJICAgICAgIGNsb3NlZCA9
IHJlZiBmYWxzZSwKCQkJICAgICAgIGJ1ZlN0eWxlID0gYnVmU3R5bGV9KQoJICBpbiBvcGVuT3V0
cyA6PSBvdXQgOjogIW9wZW5PdXRzOwoJICAgICBvdXQKCSAgZW5kKQoKICAgICAgbG9jYWwKCSB2
YWwgcmVhZFdyaXRlID0KCSAgICBsZXQgb3BlbiBGUy5TCgkgICAgaW4gZmxhZ3NbaXJ1c3IsIGl3
dXNyLCBpcmdycCwgaXdncnAsIGlyb3RoLCBpd290aF0KCSAgICBlbmQKICAgICAgaW4KCSBmdW4g
b3Blbk91dCBwYXRoID0KCSAgICAobmV3T3V0KEZTLmNyZWF0KHBhdGgsIHJlYWRXcml0ZSkpKQoJ
ICAgIGhhbmRsZSBleG4gPT4gcmFpc2UgSU8uSW97bmFtZSA9ICI8dW5pbXBsZW1lbnRlZD4iLAoJ
CQkJICAgICAgZnVuY3Rpb24gPSAib3Blbk91dCIsCgkJCQkgICAgICBjYXVzZSA9IGV4bn0KCSAg
ICAgICAKCSBmdW4gb3BlbkFwcGVuZCBwYXRoID0KCSAgICAobmV3T3V0KEZTLmNyZWF0ZWYocGF0
aCwgRlMuT19XUk9OTFksIEZTLk8uZmxhZ3NbRlMuTy5hcHBlbmQsIEZTLk8uYmluYXJ5XSwgcmVh
ZFdyaXRlKSkpCgkgICAgaGFuZGxlIGV4biA9PiByYWlzZSBJTy5Jb3tuYW1lID0gIjx1bmltcGxl
bWVudGVkPiIsCgkJCQkgICAgICBmdW5jdGlvbiA9ICJvcGVuQXBwZW5kIiwKCQkJCSAgICAgIGNh
dXNlID0gZXhufQogICAgICBlbmQKICAgICAgCiAgICAgIGZ1biBvdXRwdXQob3V0IGFzIHJlZihP
dXR7ZmQsIGNsb3NlZCwgYnVmU3R5bGUsIC4uLn0pLCB2KTogdW5pdCA9CgkgbGV0CgkgaW4gaWYg
IWNsb3NlZAoJICAgICAgIHRoZW4gcmFpc2UgSU8uSW97bmFtZSA9ICI8dW5pbXBsZW1lbnRlZD4i
LAoJCQkJZnVuY3Rpb24gPSAib3V0cHV0MSIsCgkJCQljYXVzZSA9IElPLkNsb3NlZFN0cmVhbX0K
CSAgICBlbHNlCgkgICAgICAgbGV0CgkJICB2YWwgdmVjU2l6ZSA9IFZlY3Rvci5sZW5ndGggdgoJ
CSAgZnVuIHN0b3JlKGIgYXMgQnVme3NpemUsIGFycmF5fSkgPQoJCSAgICAgbGV0CgkJCXZhbCBj
dXJTaXplID0gIXNpemUKCQkJdmFsIG5ld1NpemUgPSB2ZWNTaXplICsgY3VyU2l6ZQoJCSAgICAg
aW4KCQkJaWYgbmV3U2l6ZSA+IGJ1ZlNpemUKCQkJICAgdGhlbgoJCQkgICAgICBsZXQKCQkJCSAo
KiBmbHVzaCB0aGUgY3VycmVudCBidWZmZXIgKyBhIHByZWZpeCBvZiB0aGUKCQkJCSAgKiB2ZWN0
b3IsIGlmIHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBlbXB0eQoJCQkJICAqKQoJCQkJIHZhbCB2ZWNp
ID0KCQkJCSAgICBpZiBjdXJTaXplID0gMAoJCQkJICAgICAgIHRoZW4gMAoJCQkJICAgIGVsc2UK
CQkJCSAgICAgICBsZXQgdmFsIGZpbGwgPSBidWZTaXplIC0gY3VyU2l6ZQoJCQkJICAgICAgIGlu
IEFycmF5LmNvcHlWZWN7c3JjID0gdiwKCQkJCQkJCXNpID0gMCwKCQkJCQkJCWxlbiA9IFNPTUUg
ZmlsbCwKCQkJCQkJCWRzdCA9IGFycmF5LAoJCQkJCQkJZGkgPSBjdXJTaXplfSA7CgkJCQkJICBz
aXplIDo9IGJ1ZlNpemUgOwoJCQkJCSAgZmx1c2goZmQsIGIpIDsKCQkJCQkgIGZpbGwKCQkJCSAg
ICAgICBlbmQKCQkJCSAoKiBmbHVzaCBvdXQgYXMgbXVjaCBvZiB0aGUgdmVjdG9yIGFzIG5lZWRl
ZAoJCQkJICAqIHNvIHRoYXQgPD0gYnVmU2l6ZSByZW1haW5zCgkJCQkgICopCgkJCQkgZnVuIGxv
b3AgaSA9CgkJCQkgICAgbGV0IHZhbCByZW1haW5pbmcgPSB2ZWNTaXplIC0gaQoJCQkJICAgIGlu
IGlmIHJlbWFpbmluZyA8PSBidWZTaXplCgkJCQkJICB0aGVuCgkJCQkJICAgICAoQXJyYXkuY29w
eVZlY3tzcmMgPSB2LAoJCQkJCQkJICAgIHNpID0gaSwKCQkJCQkJCSAgICBsZW4gPSBTT01FIHJl
bWFpbmluZywKCQkJCQkJCSAgICBkc3QgPSBhcnJheSwKCQkJCQkJCSAgICBkaSA9IDB9IDsKCQkJ
CQkgICAgICBzaXplIDo9IHJlbWFpbmluZykKCQkJCSAgICAgICBlbHNlCgkJCQkJICAoZmx1c2hH
ZW4oZmQsIHYsIGksIGJ1ZlNpemUsIFBJTy53cml0ZVZlYyk7CgkJCQkJICAgbG9vcChpICsgYnVm
U2l6ZSkpCgkJCQkgICAgZW5kCgkJCSAgICAgIGluIGxvb3AgdmVjaQoJCQkgICAgICBlbmQKCQkJ
ZWxzZSAoQXJyYXkuY29weVZlY3tzcmMgPSB2LCBzaSA9IDAsIGxlbiA9IE5PTkUsCgkJCQkJICAg
IGRzdCA9IGFycmF5LCBkaSA9IGN1clNpemV9IDsKCQkJICAgICAgc2l6ZSA6PSBuZXdTaXplKQoJ
CSAgICAgZW5kCgkgICAgICAgaW4gY2FzZSBidWZTdHlsZSBvZgoJCSAgVW5idWZmZXJlZCA9PiBm
bHVzaEdlbihmZCwgdiwgMCwgdmVjU2l6ZSwgUElPLndyaXRlVmVjKQoJCXwgTGluZSBiID0+IChz
dG9yZSBiKQoJCXwgQnVmZmVyZWQgYiA9PiBzdG9yZSBiCgkgICAgICAgZW5kIGhhbmRsZSBleG4g
PT4gcmFpc2UgSU8uSW97bmFtZSA9ICI8dW5pbXBsZW1lbnRlZD4iLAoJCQkJCSAgICAgZnVuY3Rp
b24gPSAib3V0cHV0MSIsCgkJCQkJICAgICBjYXVzZSA9IGV4bn0KCSBlbmQKICAgICAgCiAgICAg
IGZ1biBvdXRwdXQxKG91dCwgYzogZWxlbSk6IHVuaXQgPSBvdXRwdXQob3V0LCBzdHIgYykKCSAg
ICAKICAgICAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qKQogICAgICAoKiAgICAgICAgICAgICAgICAgICAgIGluc3RyZWFtICAgICAgICAgICAg
ICAgICAgICAgICopCiAgICAgICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKikKCiAgICAgIGRhdGF0eXBlIGluc3RyZWFtID0KCSBJbiBvZiB7ZmQ6
IEZTLmZpbGVfZGVzYywKCQljbG9zZWQ6IGJvb2wgcmVmLAoJCWVvZjogYm9vbCByZWYsCgkJZmly
c3Q6IGludCByZWYsICgqIGluZGV4IG9mIGZpcnN0IGNoYXJhY3RlciAqKQoJCWxhc3Q6IGludCBy
ZWYsICAoKiBvbmUgcGFzdCB0aGUgaW5kZXggb2YgdGhlIGxhc3QgY2hhciAqKQoJCWJ1ZjogQXJy
YXkuYXJyYXl9CgogICAgICBmdW4gbmV3SW4gZmQgPSBJbntmZCA9IGZkLAoJCQllb2YgPSByZWYg
ZmFsc2UsCgkJCWNsb3NlZCA9IHJlZiBmYWxzZSwKCQkJZmlyc3QgPSByZWYgMCwKCQkJbGFzdCA9
IHJlZiAwLAoJCQlidWYgPSBBcnJheS5hcnJheShidWZTaXplLCAwdzApfQoKICAgICAgZnVuIG9w
ZW5JbiBwYXRoID0KCSBuZXdJbihGUy5vcGVuZihwYXRoLCBGUy5PX1JET05MWSwgRlMuTy5mbGFn
c1tGUy5PLmJpbmFyeV0pKQoJIGhhbmRsZSBleG4gPT4gcmFpc2UgSU8uSW97bmFtZSA9ICI8dW5p
bXBsZW1lbnRlZD4iLAoJCQkJICAgZnVuY3Rpb24gPSAib3BlbkluIiwKCQkJCSAgIGNhdXNlID0g
ZXhufQoKICAgICAgZnVuIHVwZGF0ZUluKElue2ZkLCBjbG9zZWQsIGVvZiwgZmlyc3QsIGxhc3Qs
IGJ1ZiwgLi4ufSk6IHVuaXQgPQoJIGlmICFjbG9zZWQKCSAgICB0aGVuIHJhaXNlIElPLklve25h
bWUgPSAiPHVuaW1wbGVtZW50ZWQ+IiwKCQkJICAgICBmdW5jdGlvbiA9ICI8dW5rbm93bj4iLAoJ
CQkgICAgIGNhdXNlID0gSU8uQ2xvc2VkU3RyZWFtfQoJIGVsc2UgaWYgIWVvZgoJCSB0aGVuICgp
CgkgICAgICBlbHNlIAoJCSBpZiAhZmlyc3QgPSAhbGFzdAoJCSAgICB0aGVuICgqIG5lZWQgdG8g
cmVhZCAqKQoJCSAgICAgICBsZXQKCQkJICB2YWwgYnl0ZXNSZWFkID0KCQkJICAgICBQSU8ucmVh
ZEFycihmZCwge2J1ZiA9IGJ1ZiwgaSA9IDAsIHN6ID0gTk9ORX0pCgkJICAgICAgIGluIGlmIGJ5
dGVzUmVhZCA9IDAKCQkJICAgICB0aGVuIGVvZiA6PSB0cnVlCgkJCSAgZWxzZSAoZmlyc3QgOj0g
MDsgbGFzdCA6PSBieXRlc1JlYWQpCgkJICAgICAgIGVuZAoJCSBlbHNlICgpCgogICAgICB2YWwg
ZW1wdHkgPSBXb3JkOFZlY3Rvci50YWJ1bGF0ZSAoMCwgZm4gXyA9PiAwdzApCgkgCiAgICAgIGZ1
biBpbnB1dChpbnMgYXMgSW57ZW9mLCBidWYsIGZpcnN0LCBsYXN0LCAuLi59KTogdmVjdG9yID0K
CSAodXBkYXRlSW4gaW5zCgkgIDsgaWYgIWVvZgoJICAgICAgIHRoZW4gKGVvZiA6PSBmYWxzZTsg
ZW1wdHkpCgkgICAgZWxzZQoJICAgICAgICgKCQkoQXJyYXkuZXh0cmFjdChidWYsICFmaXJzdCwg
U09NRSghbGFzdCAtICFmaXJzdCkpKQoJCWJlZm9yZSBmaXJzdCA6PSAhbGFzdCkpCgkgaGFuZGxl
IGV4biA9PiByYWlzZSBJTy5Jb3tuYW1lID0gIjx1bmltcGxlbWVudGVkPiIsCgkJCQkgICBmdW5j
dGlvbiA9ICJpbnB1dCIsCgkJCQkgICBjYXVzZSA9IGV4bn0KCiAgICAgIGZ1biBsb29rYWhlYWQo
aW5zIGFzIElue2VvZiwgYnVmLCBmaXJzdCwgLi4ufSk6IGVsZW0gb3B0aW9uID0KCSAoaWYgIWVv
ZgoJICAgICB0aGVuIE5PTkUKCSAgZWxzZSAodXBkYXRlSW4gaW5zCgkJOyBpZiAhZW9mCgkJICAg
ICB0aGVuIE5PTkUKCQkgIGVsc2UgU09NRSgoQXJyYXkuc3ViKGJ1ZiwgIWZpcnN0KSkpKSkKCSBo
YW5kbGUgZXhuID0+IHJhaXNlIElPLklve25hbWUgPSAiPHVuaW1wbGVtZW50ZWQ+IiwKCQkJCSAg
IGZ1bmN0aW9uID0gImxvb2thaGVhZCIsCgkJCQkgICBjYXVzZSA9IGV4bn0KCiAgICAgIGZ1biBp
bnB1dDEoaW5zIGFzIElue2J1ZiwgZmlyc3QsIC4uLn0pOiBlbGVtIG9wdGlvbiA9CgkgKGNhc2Ug
bG9va2FoZWFkIGlucyBvZgoJICAgICBOT05FID0+IE5PTkUKCSAgIHwgcmVzIGFzIFNPTUUgXyA9
PiAoZmlyc3QgOj0gMSArICFmaXJzdDsKCQkJICAgICAgIHJlcykpCgkgaGFuZGxlIGV4biA9PiBy
YWlzZSBJTy5Jb3tuYW1lID0gIjx1bmltcGxlbWVudGVkPiIsCgkJCQkgICBmdW5jdGlvbiA9ICJp
bnB1dDEiLAoJCQkJICAgY2F1c2UgPSBleG59CgogICAgICBmdW4gaW5wdXROKGlucyBhcyBJbntm
ZCwgZW9mLCBmaXJzdCwgbGFzdCwgYnVmLCAuLi59LAoJCSBieXRlc1RvUmVhZDogaW50KTogdmVj
dG9yID0KCSAoaWYgSW50LmdldShieXRlc1RvUmVhZCwgQXJyYXkubWF4TGVuKQoJICAgICB0aGVu
IHJhaXNlIFNpemUKCSAgZWxzZQoJICAgICBpZiAhZW9mCgkJdGhlbiAoZW9mIDo9IGZhbHNlOyBl
bXB0eSkKCSAgICAgZWxzZQoJCWxldCB2YWwgc2l6ZSA9ICFsYXN0IC0gIWZpcnN0CgkJaW4gaWYg
c2l6ZSA+PSBieXRlc1RvUmVhZAoJCSAgICAgIHRoZW4gKAoJCQkgICAgKEFycmF5LmV4dHJhY3Qo
YnVmLCAhZmlyc3QsIFNPTUUgYnl0ZXNUb1JlYWQpKQoJCQkgICAgYmVmb3JlIGZpcnN0IDo9IGJ5
dGVzVG9SZWFkICsgIWZpcnN0KQoJCSAgIGVsc2UKCQkgICAgICBsZXQgdmFsIGRzdCA9IEFycmF5
LmFycmF5KGJ5dGVzVG9SZWFkLCAwdzApCgkJCSB2YWwgXyA9CgkJCSAgICAoQXJyYXkuY29weXtz
cmMgPSBidWYsIHNpID0gIWZpcnN0LCBsZW4gPSBTT01FIHNpemUsCgkJCQkJZHN0ID0gZHN0LCBk
aSA9IDB9IDsKCQkJICAgICBmaXJzdCA6PSAhbGFzdCkKCQkJIGZ1biBsb29wKGJ5dGVzUmVhZDog
aW50KTogaW50ID0KCQkJICAgIGlmIGJ5dGVzUmVhZCA9IGJ5dGVzVG9SZWFkCgkJCSAgICAgICB0
aGVuIGJ5dGVzUmVhZAoJCQkgICAgZWxzZSBsZXQKCQkJCSAgICB2YWwgYnl0ZXNSZWFkJyA9CgkJ
CQkgICAgICAgUElPLnJlYWRBcnIKCQkJCSAgICAgICAoZmQsIHtidWYgPSBkc3QsIGkgPSBieXRl
c1JlYWQsCgkJCQkJICAgICBzeiA9IFNPTUUoYnl0ZXNUb1JlYWQgLSBieXRlc1JlYWQpfSkKCQkJ
CSBpbiBpZiBieXRlc1JlYWQnID0gMAoJCQkJICAgICAgIHRoZW4gKGVvZiA6PSB0cnVlIDsKCQkJ
CQkgICAgIGJ5dGVzUmVhZCkKCQkJCSAgICBlbHNlIGxvb3AoYnl0ZXNSZWFkICsgYnl0ZXNSZWFk
JykKCQkJCSBlbmQKCQkJIHZhbCBieXRlc1JlYWQgPSBsb29wIHNpemUKCQkgICAgICBpbiBpZiBi
eXRlc1JlYWQgPSBieXRlc1RvUmVhZAoJCQkgICAgdGhlbgoJCQkgICAgICAgICAoUHJpbWl0aXZl
LlZlY3Rvci5mcm9tQXJyYXkgZHN0KQoJCQkgZWxzZSAoCgkJCSAgICAgICAoQXJyYXkuZXh0cmFj
dChkc3QsIDAsIFNPTUUgYnl0ZXNSZWFkKSkpCgkJICAgICAgZW5kCgkJZW5kKQoJICAgICBoYW5k
bGUgZXhuID0+IHJhaXNlIElPLklve25hbWUgPSAiPHVuaW1wbGVtZW50ZWQ+IiwKCQkJCSAgICAg
ICBmdW5jdGlvbiA9ICJpbnB1dE4iLAoJCQkJICAgICAgIGNhdXNlID0gZXhufQoKICAgICAgZnVu
IGlucHV0QWxsKGlucyBhcyBJbntmZCwgZW9mLCBmaXJzdCwgbGFzdCwgYnVmLCAuLi59KSA9Cgkg
aWYgIWVvZgoJICAgIHRoZW4gKGVvZiA6PSBmYWxzZTsgZW1wdHkpCgkgZWxzZQoJICAgIChsZXQg
dmFsIHZzID0gW0FycmF5LmV4dHJhY3QoYnVmLCAhZmlyc3QsIFNPTUUoIWxhc3QgLSAhZmlyc3Qp
KV0KCQkgZnVuIGxvb3AgdnMgPQoJCSAgICBsZXQgdmFsIHYgPSBQSU8ucmVhZFZlYyhmZCwgYnVm
U2l6ZSkKCQkgICAgaW4gaWYgVmVjdG9yLmxlbmd0aCB2ID0gMAoJCQkgIHRoZW4gKFZlY3Rvci5j
b25jYXQocmV2IHZzKSkKCQkgICAgICAgZWxzZSBsb29wKHYgOjogdnMpCgkJICAgIGVuZAoJICAg
ICBpbiBsb29wIHZzCgkgICAgIGVuZCkKCSAgICBoYW5kbGUgZXhuID0+IHJhaXNlIElPLklve25h
bWUgPSAiPHVuaW1wbGVtZW50ZWQ+IiwKCQkJCSAgICAgIGZ1bmN0aW9uID0gImlucHV0TiIsCgkJ
CQkgICAgICBjYXVzZSA9IGV4bn0KCiAgICAgICgqIG5vdCBlbnRpcmVseSBjb3JyZWN0IC0gcmVh
bGx5IG5lZWRzIHRvIGRvIG5vbiBibG9ja2luZyBsb29rYWhlYWQgKikKICAgICAgZnVuIGNhbklu
cHV0KGlucyBhcyBJbntlb2YsIGZpcnN0LCBsYXN0LCAuLi59LCBuKSA9CgkgKHVwZGF0ZUluIGlu
cwoJICA7IGlmICFlb2YKCSAgICAgICB0aGVuIFNPTUUgMAoJICAgIGVsc2UgU09NRShJbnQubWlu
KG4sICFsYXN0IC0gIWZpcnN0KSkpCgogICAgICBmdW4gY2xvc2VJbihJbntmZCwgY2xvc2VkLCAu
Li59KSA9CgkgKFBJTy5jbG9zZSBmZDsgY2xvc2VkIDo9IHRydWUpCgkgICAgCiAgICAgIGZ1biBl
bmRPZlN0cmVhbShpbnMgYXMgSW57ZW9mLCAuLi59KSA9CgkgIWVvZiBvcmVsc2UgKHVwZGF0ZUlu
IGluczsgIWVvZikKCiAgICAgICgqIFRoaXMgaXMgYWxsIGp1c3QgYSBoYWNrIHNvIHRoYXQgSSBj
YW4gZW11bGF0ZSBzY2FuU3RyZWFtICopCiAgICAgIHN0cnVjdHVyZSBTdHJlYW1JTyA9Cgkgc3Ry
dWN0CgkgICAgdHlwZSBvdXRzdHJlYW0gPSBvdXRzdHJlYW0nCgoJICAgIGRhdGF0eXBlIHN0YXRl
ID0KCSAgICAgICBVbmV2YWwgb2YgaW5zdHJlYW0KCSAgICAgfCBFdmFsIG9mIChjaGFyICogbGF6
eSkgb3B0aW9uCgkgICAgd2l0aHR5cGUgbGF6eSA9IHN0YXRlIHJlZgoKCSAgICB0eXBlIGluc3Ry
ZWFtID0gbGF6eQooKgoJICAgIGZ1biBtYWtlIGlucyA9IHJlZihVbmV2YWwgaW5zKQoKCSAgICBm
dW4gaW5wdXQxJyByID0KCSAgICAgICBjYXNlICFyIG9mCgkJICBFdmFsIHYgPT4gdgoJCXwgVW5l
dmFsIGlucyA9PiBsZXQgdmFsIHYgPSAoY2FzZSBpbnB1dDEgaW5zIG9mCgkJCQkJCU5PTkUgPT4g
Tk9ORQoJCQkJCSAgICAgIHwgU09NRSBjID0+IFNPTUUoYywgbWFrZSBpbnMpKQoJCQkJaW4gciA6
PSBFdmFsIHY7IHYKCQkJCWVuZAoJICAgIHZhbCBpbnB1dDEgPSBpbnB1dDEnKikKCSBlbmQKKCoK
ICAgICAgZnVuIHNjYW5TdHJlYW0gZiBpbnMgPQoJIGNhc2UgZiBTdHJlYW1JTy5pbnB1dDEgKFN0
cmVhbUlPLm1ha2UgaW5zKSBvZgoJICAgIE5PTkUgPT4gTk9ORQoJICB8IFNPTUUodiwgXykgPT4g
U09NRSB2CSopCiAgIGVuZAooKgpzdHJ1Y3R1cmUgVGV4dElPR2xvYmFsOiBURVhUX0lPX0dMT0JB
TCA9IFRleHRJTwpvcGVuIFRleHRJTwoqKQ==

--------------CBA93EB96730D9F52627BE47
Content-Type: application/x-unknown-content-type-sig_auto_file;
 name="file-sys.sig"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="file-sys.sig"

c2lnbmF0dXJlIFBPU0lYX0ZJTEVTWVMgPQogICBzaWcKICAgICAgZXF0eXBlIHVpZAogICAgICBl
cXR5cGUgZ2lkCiAgICAgIGVxdHlwZSBmaWxlX2Rlc2MKCiAgICAgIHZhbCBmZFRvV29yZDogZmls
ZV9kZXNjIC0+IFN5c1dvcmQud29yZCAKICAgICAgdmFsIHdvcmRUb0ZEOiBTeXNXb3JkLndvcmQg
LT4gZmlsZV9kZXNjIAoKICAgICAgKCogaWRlbnRpdHkgZnVuY3Rpb25zICopCiAgICAgIHZhbCBm
ZFRvSU9EOiBmaWxlX2Rlc2MgLT4gZmlsZV9kZXNjICgqIE9TLklPLmlvZGVzYyAqKQogICAgICB2
YWwgaW9kVG9GRDogZmlsZV9kZXNjICgqIE9TLklPLmlvZGVzYyAqKSAtPiBmaWxlX2Rlc2Mgb3B0
aW9uCgkgCiAgICAgIHR5cGUgZGlyc3RyZWFtCiAgICAgIHZhbCBvcGVuZGlyOiBzdHJpbmcgLT4g
ZGlyc3RyZWFtCiAgICAgIHZhbCByZWFkZGlyOiBkaXJzdHJlYW0gLT4gc3RyaW5nCiAgICAgIHZh
bCByZXdpbmRkaXI6IGRpcnN0cmVhbSAtPiB1bml0CiAgICAgIHZhbCBjbG9zZWRpcjogZGlyc3Ry
ZWFtIC0+IHVuaXQKCiAgICAgIHZhbCBjaGRpcjogc3RyaW5nIC0+IHVuaXQKICAgICAgdmFsIGdl
dGN3ZDogdW5pdCAtPiBzdHJpbmcKCSAKICAgICAgdmFsIHN0ZGluOiBmaWxlX2Rlc2MgCiAgICAg
IHZhbCBzdGRvdXQ6IGZpbGVfZGVzYyAKICAgICAgdmFsIHN0ZGVycjogZmlsZV9kZXNjCgkgCiAg
ICAgIHN0cnVjdHVyZSBTIDoKCSBzaWcKCSAgICB0eXBlIG1vZGUKCSAgICBpbmNsdWRlIFBPU0lY
X0ZMQUdTIHdoZXJlIHR5cGUgZmxhZ3MgPSBtb2RlIAoKCSAgICB2YWwgaXJ3eHU6IG1vZGUgCgkg
ICAgdmFsIGlydXNyOiBtb2RlIAoJICAgIHZhbCBpd3VzcjogbW9kZSAKCSAgICB2YWwgaXh1c3I6
IG1vZGUgCgkgICAgdmFsIGlyd3hnOiBtb2RlIAoJICAgIHZhbCBpcmdycDogbW9kZSAKCSAgICB2
YWwgaXdncnA6IG1vZGUgCgkgICAgdmFsIGl4Z3JwOiBtb2RlIAoJICAgIHZhbCBpcnd4bzogbW9k
ZSAKCSAgICB2YWwgaXJvdGg6IG1vZGUgCgkgICAgdmFsIGl3b3RoOiBtb2RlIAoJICAgIHZhbCBp
eG90aDogbW9kZSAKCSAgICB2YWwgaXN1aWQ6IG1vZGUgCgkgICAgdmFsIGlzZ2lkOiBtb2RlIAoJ
IGVuZAoKICAgICAgc3RydWN0dXJlIE8gOgoJIHNpZwoJICAgIGluY2x1ZGUgUE9TSVhfRkxBR1MK
CiAgICAgICAgICAgIHZhbCBhcHBlbmQ6IGZsYWdzIAoJICAgIHZhbCBleGNsOiBmbGFncyAKCSAg
ICB2YWwgbm9jdHR5OiBmbGFncyAKCSAgICB2YWwgbm9uYmxvY2s6IGZsYWdzIAoJICAgIHZhbCBz
eW5jOiBmbGFncyAKCSAgICB2YWwgdHJ1bmM6IGZsYWdzIAogICAgICAgICAgICB2YWwgdGV4dDog
ZmxhZ3MKICAgICAgICAgICAgdmFsIGJpbmFyeTogZmxhZ3MKCSBlbmQKCSAKICAgICAgIGRhdGF0
eXBlIG9wZW5fbW9kZSAgPSBPX1JET05MWSAgfCBPX1dST05MWSAgfCBPX1JEV1IKCiAgICAgICB2
YWwgb3BlbmY6IHN0cmluZyAqIG9wZW5fbW9kZSAqIE8uZmxhZ3MgLT4gZmlsZV9kZXNjIAogICAg
ICAgdmFsIGNyZWF0ZWY6IHN0cmluZyAqIG9wZW5fbW9kZSAqIE8uZmxhZ3MgKiBTLm1vZGUgLT4g
ZmlsZV9kZXNjIAogICAgICAgdmFsIGNyZWF0OiBzdHJpbmcgKiBTLm1vZGUgLT4gZmlsZV9kZXNj
IAogICAgICAgdmFsIHVtYXNrOiBTLm1vZGUgLT4gUy5tb2RlCiAgICAgICB2YWwgbGluazoge29s
ZDogc3RyaW5nLCBuZXc6IHN0cmluZ30gLT4gdW5pdAogICAgICAgdmFsIG1rZGlyOiBzdHJpbmcg
KiBTLm1vZGUgLT4gdW5pdAogICAgICAgdmFsIG1rZmlmbzogc3RyaW5nICogUy5tb2RlIC0+IHVu
aXQKICAgICAgIHZhbCB1bmxpbms6IHN0cmluZyAtPiB1bml0CiAgICAgICB2YWwgcm1kaXI6IHN0
cmluZyAtPiB1bml0CiAgICAgICB2YWwgcmVuYW1lOiB7b2xkOiBzdHJpbmcsIG5ldzogc3RyaW5n
fSAtPiB1bml0CiAgICAgICB2YWwgc3ltbGluazoge29sZDogc3RyaW5nLCBuZXc6IHN0cmluZ30g
LT4gdW5pdAogICAgICAgdmFsIHJlYWRsaW5rOiBzdHJpbmcgLT4gc3RyaW5nCgogICAgICAgZXF0
eXBlIGRldgogICAgICAgdmFsIHdvcmRUb0RldjogU3lzV29yZC53b3JkIC0+IGRldiAKICAgICAg
IHZhbCBkZXZUb1dvcmQ6IGRldiAtPiBTeXNXb3JkLndvcmQgCgogICAgICAgZXF0eXBlIGlubwog
ICAgICAgdmFsIHdvcmRUb0lubzogU3lzV29yZC53b3JkIC0+IGlubyAKICAgICAgIHZhbCBpbm9U
b1dvcmQ6IGlubyAtPiBTeXNXb3JkLndvcmQgCgogICAgICAgc3RydWN0dXJlIFNUIDoKCSAgc2ln
CgkgICAgIHR5cGUgc3RhdAoKCSAgICAgdmFsIGlzRGlyOiBzdGF0IC0+IGJvb2wgCgkgICAgIHZh
bCBpc0Nocjogc3RhdCAtPiBib29sIAoJICAgICB2YWwgaXNCbGs6IHN0YXQgLT4gYm9vbCAKCSAg
ICAgdmFsIGlzUmVnOiBzdGF0IC0+IGJvb2wgCgkgICAgIHZhbCBpc0ZJRk86IHN0YXQgLT4gYm9v
bCAKCSAgICAgdmFsIGlzTGluazogc3RhdCAtPiBib29sIAoJICAgICB2YWwgaXNTb2NrOiBzdGF0
IC0+IGJvb2wgCgkgICAgIHZhbCBtb2RlOiBzdGF0IC0+IFMubW9kZSAKCSAgICAgdmFsIGlubzog
c3RhdCAtPiBpbm8gCgkgICAgIHZhbCBkZXY6IHN0YXQgLT4gZGV2IAoJICAgICB2YWwgbmxpbms6
IHN0YXQgLT4gaW50IAoJICAgICB2YWwgdWlkOiBzdGF0IC0+IHVpZCAKCSAgICAgdmFsIGdpZDog
c3RhdCAtPiBnaWQgCgkgICAgIHZhbCBzaXplOiBzdGF0IC0+IFBvc2l0aW9uLmludCAKCSAgICAg
dmFsIGF0aW1lOiBzdGF0IC0+IFRpbWUudGltZSAKCSAgICAgdmFsIG10aW1lOiBzdGF0IC0+IFRp
bWUudGltZSAKCSAgICAgdmFsIGN0aW1lOiBzdGF0IC0+IFRpbWUudGltZSAKCSAgZW5kCgogICAg
ICAgdmFsIHN0YXQ6IHN0cmluZyAtPiBTVC5zdGF0CiAgICAgICB2YWwgbHN0YXQ6IHN0cmluZyAt
PiBTVC5zdGF0CiAgICAgICB2YWwgZnN0YXQ6IGZpbGVfZGVzYyAtPiBTVC5zdGF0CgogICAgICAg
ZGF0YXR5cGUgYWNjZXNzX21vZGUgPQoJICBBX1JFQUQKCXwgQV9XUklURQoJfCBBX0VYRUMKCSAg
CiAgICAgICB2YWwgYWNjZXNzOiBzdHJpbmcgKiBhY2Nlc3NfbW9kZSBsaXN0IC0+IGJvb2wKICAg
ICAgIHZhbCBjaG1vZDogc3RyaW5nICogUy5tb2RlIC0+IHVuaXQKICAgICAgIHZhbCBmY2htb2Q6
IGZpbGVfZGVzYyAqIFMubW9kZSAtPiB1bml0CiAgICAgICB2YWwgY2hvd246IHN0cmluZyAqIHVp
ZCAqIGdpZCAtPiB1bml0CiAgICAgICB2YWwgZmNob3duOiBmaWxlX2Rlc2MgKiB1aWQgKiBnaWQg
LT4gdW5pdAogICAgICAgdmFsIHV0aW1lIDoKCSAgc3RyaW5nICoge2FjdGltZTogVGltZS50aW1l
LCBtb2R0aW1lOiBUaW1lLnRpbWV9IG9wdGlvbiAtPiB1bml0CiAgICAgICB2YWwgZnRydW5jYXRl
OiBmaWxlX2Rlc2MgKiBQb3NpdGlvbi5pbnQgLT4gdW5pdAogICAgICAgdmFsIHBhdGhjb25mOiBz
dHJpbmcgKiBzdHJpbmcgLT4gU3lzV29yZC53b3JkIG9wdGlvbgogICAgICAgdmFsIGZwYXRoY29u
ZjogZmlsZV9kZXNjICogc3RyaW5nIC0+IFN5c1dvcmQud29yZCBvcHRpb24KICAgZW5kCgoKc2ln
bmF0dXJlIFBPU0lYX0ZJTEVTWVNfRVhUUkEgPQogICBzaWcKICAgICAgaW5jbHVkZSBQT1NJWF9G
SUxFU1lTCgogICAgICB2YWwgd29yZFRvT3Blbk1vZGU6IFN5c1dvcmQud29yZCAtPiBvcGVuX21v
ZGUKICAgZW5kCg==

--------------CBA93EB96730D9F52627BE47
Content-Type: application/x-unknown-content-type-ProjectBuilder.h;
 name="mlton-posix.h"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="mlton-posix.h"

LyogQ29weXJpZ2h0IChDKSAxOTk3LTE5OTkgTkVDIFJlc2VhcmNoIEluc3RpdHV0ZS4KICogUGxl
YXNlIHNlZSB0aGUgZmlsZSBMSUNFTlNFIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKi8KI2lm
bmRlZiBfTUxUT05fUE9TSVhfSAojZGVmaW5lIF9NTFRPTl9QT1NJWF9ICgojaWYgZGVmaW5lZChf
V0lOMzIpCi8vIE9mIGNvdXJzZSBXaW5kb3dzIGRvZXMgbm90IHByb3ZpZGUgdGhlIFVuaXgtc3R5
bGUgZmlsZSBwZXJtaXNzaW9ucwojZGVmaW5lIFNfSVJHUlAgMAojZGVmaW5lIFNfSVdHUlAgMAoj
ZGVmaW5lIFNfSVJPVEggMAojZGVmaW5lIFNfSVdPVEggMAojZWxzZQovLyBXaW5kb3dzIGRlZmlu
ZXMgdGhlc2UgLSB0aGV5IHNob3VsZCBiZSBpZ25vcmVkIGluIFVuaXgKI2RlZmluZSBPX0JJTkFS
WSAwCiNkZWZpbmUgT19URVhUICAgMAojZW5kaWYKCiNpbmNsdWRlICJtbHRvbi1saWIuaCIKCiNk
ZWZpbmUgTUxUT05fZXJybm8oKSBlcnJubwojZGVmaW5lIE1MVE9OX2NsZWFyRXJybm8oKSBlcnJu
byA9IDAKCmV4dGVybiBjaGFyICoqZW52aXJvbjsKCnZvaWQgTUxUT05faW5pdF9wb3NpeCgpOwoK
LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwov
KiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICovCi8q
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCiNk
ZWZpbmUgTUxUT05fc3RyZXJyb3IobikgKChjcG9pbnRlcikoc3RyZXJyb3IobikpKQoKI2lmbmRl
ZiBFQ0FOQ0VMRUQKI2RlZmluZSBFQ0FOQ0VMRUQgMAojZW5kaWYKCiNpZm5kZWYgRU5PVFNVUAoj
ZGVmaW5lIEVOT1RTVVAgMAojZW5kaWYKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogICAgICAgICAgICAgICAgICAgICAgRmlsZVN5cyAg
ICAgICAgICAgICAgICAgICAgICAqLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICovCgojZGVmaW5lIE1MVE9OX29wZW5kaXIocCkgKChjcG9pbnRl
cikob3BlbmRpcigoY2hhciopKHApKSkpCiNkZWZpbmUgTUxUT05fcmVhZGRpcihkKSAoKGNwb2lu
dGVyKShyZWFkZGlyKChESVIqKShkKSkpKQojZGVmaW5lIE1MVE9OX3Jld2luZGRpcihwKSAoKHZv
aWQpKHJld2luZGRpcigoRElSKikocCkpKSkKI2RlZmluZSBNTFRPTl9jbG9zZWRpcihwKSAoKGlu
dCkoY2xvc2VkaXIoKERJUiopKHApKSkpCgojZGVmaW5lIE1MVE9OX2RpcmVudF9uYW1lKGQpICgo
Y3BvaW50ZXIpKCgoc3RydWN0IGRpcmVudCopKGQpKS0+ZF9uYW1lKSkKCiNkZWZpbmUgTUxUT05f
ZnN0YXQoZixzKSAoKGludCkoZnN0YXQoKGYpLCAoc3RydWN0IHN0YXQqKShzKSkpKQojZGVmaW5l
IE1MVE9OX2xzdGF0KGYscykgKChpbnQpKGxzdGF0KChjaGFyKikoZiksIChzdHJ1Y3Qgc3RhdCop
KHMpKSkpCiNkZWZpbmUgTUxUT05fc3RhdChmLHMpICgoaW50KShzdGF0KChjaGFyKikoZiksIChz
dHJ1Y3Qgc3RhdCopKHMpKSkpCgpleHRlcm4gc3RydWN0IHN0YXQgTUxUT05fc3RhdDsKCiNkZWZp
bmUgTUxUT05fc3RhdF9kZXYocCkgKCh1aW50KSgoKHN0cnVjdCBzdGF0KikocCkpLT5zdF9kZXYp
KQojZGVmaW5lIE1MVE9OX3N0YXRfaW5vKHApICgoaW50KSgoKHN0cnVjdCBzdGF0KikocCkpLT5z
dF9pbm8pKQojZGVmaW5lIE1MVE9OX3N0YXRfbW9kZShwKSAoKHVpbnQpKCgoc3RydWN0IHN0YXQq
KShwKSktPnN0X21vZGUpKQojZGVmaW5lIE1MVE9OX3N0YXRfbmxpbmsocCkgKChpbnQpKCgoc3Ry
dWN0IHN0YXQqKShwKSktPnN0X25saW5rKSkKI2RlZmluZSBNTFRPTl9zdGF0X3VpZChwKSAoKHVp
bnQpKCgoc3RydWN0IHN0YXQqKShwKSktPnN0X3VpZCkpCiNkZWZpbmUgTUxUT05fc3RhdF9naWQo
cCkgKCh1aW50KSgoKHN0cnVjdCBzdGF0KikocCkpLT5zdF9naWQpKQojZGVmaW5lIE1MVE9OX3N0
YXRfcmRldihwKSAoKHVpbnQpKCgoc3RydWN0IHN0YXQqKShwKSktPnN0X3JkZXYpKQojZGVmaW5l
IE1MVE9OX3N0YXRfc2l6ZShwKSAoKGludCkoKChzdHJ1Y3Qgc3RhdCopKHApKS0+c3Rfc2l6ZSkp
CiNkZWZpbmUgTUxUT05fc3RhdF9hdGltZShwKSAoKGludCkoKChzdHJ1Y3Qgc3RhdCopKHApKS0+
c3RfYXRpbWUpKQojZGVmaW5lIE1MVE9OX3N0YXRfbXRpbWUocCkgKChpbnQpKCgoc3RydWN0IHN0
YXQqKShwKSktPnN0X210aW1lKSkKI2RlZmluZSBNTFRPTl9zdGF0X2N0aW1lKHApICgoaW50KSgo
KHN0cnVjdCBzdGF0KikocCkpLT5zdF9jdGltZSkpCgojZGVmaW5lIE1MVE9OX3V0aW1lKHMsdSkg
KChpbnQpKHV0aW1lKChjaGFyKikocyksIChzdHJ1Y3QgdXRpbWJ1ZiopKHUpKSkpCgpleHRlcm4g
c3RydWN0IHV0aW1idWYgTUxUT05fdXRpbWJ1ZjsKCiNkZWZpbmUgTUxUT05fc2V0X3V0aW1idWZf
YWN0aW1lKHAseCkgKCgoc3RydWN0IHV0aW1idWYqKShwKSktPmFjdGltZSkgPSAoeCkKI2RlZmlu
ZSBNTFRPTl9zZXRfdXRpbWJ1Zl9tb2R0aW1lKHAseCkgKCgoc3RydWN0IHV0aW1idWYqKShwKSkt
Pm1vZHRpbWUpID0gKHgpCgojZGVmaW5lIE1MVE9OX2FjY2VzcyhmLHcpICgoaW50KShhY2Nlc3Mo
KGNoYXIqKShmKSwgKHcpKSkpCiNkZWZpbmUgTUxUT05fY2hkaXIocCkgKChpbnQpKGNoZGlyKChj
aGFyKikocCkpKSkKI2RlZmluZSBNTFRPTl9jaG1vZChwLG0pICgoaW50KShjaG1vZCgoY2hhciop
KHApLCAobSkpKSkKI2RlZmluZSBNTFRPTl9nZXRjd2QoYnVmLG4pICgoY3BvaW50ZXIpKGdldGN3
ZCgoYnVmKSwobikpKSkKI2RlZmluZSBNTFRPTl9saW5rKHAxLHAyKSAoKGludCkobGluaygoY2hh
ciopKHAxKSwgKGNoYXIqKShwMikpKSkKI2RlZmluZSBNTFRPTl9ta2RpcihwLHcpICgoaW50KSht
a2RpcigoY2hhciopKHApLCAodykpKSkKI2RlZmluZSBNTFRPTl9ta2ZpZm8ocCx3KSAoKGludCko
bWtmaWZvKChjaGFyKikocCksICh3KSkpKQojZGVmaW5lIE1MVE9OX29wZW4ocCx3LG0pICgoaW50
KShvcGVuKChjaGFyKikocCksICh3KSwgKG0pKSkpCiNkZWZpbmUgTUxUT05fcGF0aGNvbmYocCxu
KSAoKGludCkocGF0aGNvbmYoKGNoYXIqKShwKSwgKG4pKSkpCiNkZWZpbmUgTUxUT05fcmVhZGxp
bmsocCxiLG4pICgoaW50KShyZWFkbGluaygoY2hhciopKHApLCAoYiksIChuKSkpKQojZGVmaW5l
IE1MVE9OX3JlbmFtZShwMSxwMikgKChpbnQpKHJlbmFtZSgoY2hhciopKHAxKSwgKGNoYXIqKShw
MikpKSkKI2RlZmluZSBNTFRPTl9ybWRpcihwKSAoKGludCkocm1kaXIoKGNoYXIqKShwKSkpKQoj
ZGVmaW5lIE1MVE9OX3N5bWxpbmsocDEscDIpICgoaW50KShzeW1saW5rKChjaGFyKikocDEpLCAo
Y2hhciopKHAyKSkpKQojZGVmaW5lIE1MVE9OX3VubGluayhwKSAoKGludCkodW5saW5rKChjaGFy
KikocCkpKSkKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gKi8KLyogICAgICAgICAgICAgICAgICAgICAgICBJTyAgICAgICAgICAgICAgICAgICAg
ICAgICAqLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCgojZGVmaW5lIE1MVE9OX3JlYWQoZmQsIGIsIGksIHMpICgoaW50KShyZWFkKChmZCks
ICh2b2lkKikoKGNoYXIqKShiKSArIChpKSksIChzKSkpKQojZGVmaW5lIE1MVE9OX3dyaXRlKGZk
LCBiLCBpLCBzKSAoKGludCkod3JpdGUoKGZkKSwgKHZvaWQqKSgoY2hhciopKGIpICsgKGkpKSwg
KHMpKSkpCiNkZWZpbmUgTUxUT05fcGlwZShwKSAoKGludCkocGlwZSgoaW50KikocCkpKSkKCmV4
dGVybiBzdHJ1Y3QgZmxvY2sgTUxUT05fZmxvY2s7CgojZGVmaW5lIE1MVE9OX2Zsb2NrX3R5cGUo
cCkgKChpbnQpKCgoc3RydWN0IGZsb2NrKikocCkpLT5sX3R5cGUpKQojZGVmaW5lIE1MVE9OX2Zs
b2NrX3doZW5jZShwKSAoKGludCkoKChzdHJ1Y3QgZmxvY2sqKShwKSktPmxfd2hlbmNlKSkKI2Rl
ZmluZSBNTFRPTl9mbG9ja19zdGFydChwKSAoKGludCkoKChzdHJ1Y3QgZmxvY2sqKShwKSktPmxf
c3RhcnQpKQojZGVmaW5lIE1MVE9OX2Zsb2NrX2xlbihwKSAoKGludCkoKChzdHJ1Y3QgZmxvY2sq
KShwKSktPmxfbGVuKSkKI2RlZmluZSBNTFRPTl9mbG9ja19waWQocCkgKChpbnQpKCgoc3RydWN0
IGZsb2NrKikocCkpLT5sX3BpZCkpCgojZGVmaW5lIE1MVE9OX3NldF9mbG9ja190eXBlKHAseCkg
KCgoc3RydWN0IGZsb2NrKikocCkpLT5sX3R5cGUpID0gKHgpCiNkZWZpbmUgTUxUT05fc2V0X2Zs
b2NrX3doZW5jZShwLHgpICgoKHN0cnVjdCBmbG9jayopKHApKS0+bF93aGVuY2UpID0gKHgpCiNk
ZWZpbmUgTUxUT05fc2V0X2Zsb2NrX3N0YXJ0KHAseCkgKCgoc3RydWN0IGZsb2NrKikocCkpLT5s
X3N0YXJ0KSA9ICh4KQojZGVmaW5lIE1MVE9OX3NldF9mbG9ja19sZW4ocCx4KSAoKChzdHJ1Y3Qg
ZmxvY2sqKShwKSktPmxfbGVuKSA9ICh4KQojZGVmaW5lIE1MVE9OX3NldF9mbG9ja19waWQocCx4
KSAoKChzdHJ1Y3QgZmxvY2sqKShwKSktPmxfcGlkKSA9ICh4KQoKLyogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwovKiAgICAgICAgICAgICAgICAg
ICAgICBQcm9jRW52ICAgICAgICAgICAgICAgICAgICAgICovCi8qIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCmV4dGVybiBwb2ludGVyIE1MVE9O
X2Vudmlyb247CgojZGVmaW5lIE1MVE9OX3RpbWVzKHQpICgoaW50KSh0aW1lcygoc3RydWN0IHRt
cyopKHQpKSkpCgpleHRlcm4gc3RydWN0IHRtcyBNTFRPTl90bXM7CgojZGVmaW5lIE1MVE9OX3Rt
c191dGltZShwKSAoKGludCkoKChzdHJ1Y3QgdG1zKikocCkpLT50bXNfdXRpbWUpKQojZGVmaW5l
IE1MVE9OX3Rtc19zdGltZShwKSAoKGludCkoKChzdHJ1Y3QgdG1zKikocCkpLT50bXNfc3RpbWUp
KQojZGVmaW5lIE1MVE9OX3Rtc19jdXRpbWUocCkgKChpbnQpKCgoc3RydWN0IHRtcyopKHApKS0+
dG1zX2N1dGltZSkpCiNkZWZpbmUgTUxUT05fdG1zX2NzdGltZShwKSAoKGludCkoKChzdHJ1Y3Qg
dG1zKikocCkpLT50bXNfY3N0aW1lKSkKCmV4dGVybiBzdHJ1Y3QgdXRzbmFtZSBNTFRPTl91dHNu
YW1lOwoKI2RlZmluZSBNTFRPTl91bmFtZSh1KSB1bmFtZSgoc3RydWN0IHV0c25hbWUqKSh1KSkK
CiNkZWZpbmUgTUxUT05fdW5hbWVfc3lzbmFtZShwKSAoKGNwb2ludGVyKSgoKHN0cnVjdCB1dHNu
YW1lKikocCkpLT5zeXNuYW1lKSkKI2RlZmluZSBNTFRPTl91bmFtZV9ub2RlbmFtZShwKSAoKGNw
b2ludGVyKSgoKHN0cnVjdCB1dHNuYW1lKikocCkpLT5ub2RlbmFtZSkpCiNkZWZpbmUgTUxUT05f
dW5hbWVfcmVsZWFzZShwKSAoKGNwb2ludGVyKSgoKHN0cnVjdCB1dHNuYW1lKikocCkpLT5yZWxl
YXNlKSkKI2RlZmluZSBNTFRPTl91bmFtZV92ZXJzaW9uKHApICgoY3BvaW50ZXIpKCgoc3RydWN0
IHV0c25hbWUqKShwKSktPnZlcnNpb24pKQojZGVmaW5lIE1MVE9OX3VuYW1lX21hY2hpbmUocCkg
KChjcG9pbnRlcikoKChzdHJ1Y3QgdXRzbmFtZSopKHApKS0+bWFjaGluZSkpCgojZGVmaW5lIE1M
VE9OX251bWdyb3VwcyAxMDAKaW50IE1MVE9OX2dldGdyb3Vwcyhwb2ludGVyIGdyb3Vwcyk7CiNk
ZWZpbmUgTUxUT05fZ2V0bG9naW4oKSAoKGNwb2ludGVyKShnZXRsb2dpbigpKSkKCiNkZWZpbmUg
TUxUT05fY3Rlcm1pZCgpICgoY3BvaW50ZXIpY3Rlcm1pZCgoc3RyaW5nKU5VTEwpKQojZGVmaW5l
IE1MVE9OX2dldGVudihzKSAoKGNwb2ludGVyKWdldGVudigoc3RyaW5nKShzKSkpCiNkZWZpbmUg
TUxUT05fdHR5bmFtZShmZCkgKChjcG9pbnRlcil0dHluYW1lKGZkKSkKCi8qIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogICAgICAgICAgICAg
ICAgICAgICAgUHJvY2VzcyAgICAgICAgICAgICAgICAgICAgICAqLwovKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgojZGVmaW5lIE1MVE9OX3dh
aXRwaWQocGlkLCBzdGF0dXMsIG9wdGlvbnMpICgoaW50KSh3YWl0cGlkKChwaWQpLCAoaW50Kiko
c3RhdHVzKSwgKG9wdGlvbnMpKSkpCgppbnQgTUxUT05fZXhlYyhwb2ludGVyIHBhdGgsIHBvaW50
ZXIgYXJncyk7CmludCBNTFRPTl9leGVjZShwb2ludGVyIHBhdGgsIHBvaW50ZXIgYXJncywgcG9p
bnRlciBlbnYpOwppbnQgTUxUT05fZXhlY3AocG9pbnRlciBmaWxlLCBwb2ludGVyIGFyZ3MpOwoK
LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwov
KiAgICAgICAgICAgICAgICAgICAgICAgU3lzREIgICAgICAgICAgICAgICAgICAgICAgICovCi8q
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCiNk
ZWZpbmUgTUxUT05fZ2V0cHduYW0ocCkgKChjcG9pbnRlcikoZ2V0cHduYW0oKGNoYXIqKShwKSkp
KQojZGVmaW5lIE1MVE9OX2dldHB3dWlkKHUpICgoY3BvaW50ZXIpKGdldHB3dWlkKCh1aWRfdCko
dSkpKSkKCiNkZWZpbmUgTUxUT05fcGFzc3dkX25hbWUocCkgKChjcG9pbnRlcikoKChzdHJ1Y3Qg
cGFzc3dkKikocCkpLT5wd19uYW1lKSkKI2RlZmluZSBNTFRPTl9wYXNzd2RfdWlkKHApICgodWlu
dCkoKChzdHJ1Y3QgcGFzc3dkKikocCkpLT5wd191aWQpKQojZGVmaW5lIE1MVE9OX3Bhc3N3ZF9n
aWQocCkgKCh1aW50KSgoKHN0cnVjdCBwYXNzd2QqKShwKSktPnB3X2dpZCkpCiNkZWZpbmUgTUxU
T05fcGFzc3dkX2RpcihwKSAoKGNwb2ludGVyKSgoKHN0cnVjdCBwYXNzd2QqKShwKSktPnB3X2Rp
cikpCiNkZWZpbmUgTUxUT05fcGFzc3dkX3NoZWxsKHApICgoY3BvaW50ZXIpKCgoc3RydWN0IHBh
c3N3ZCopKHApKS0+cHdfc2hlbGwpKQoKI2RlZmluZSBNTFRPTl9nZXRncmdpZChnKSAoKGNwb2lu
dGVyKShnZXRncmdpZCgoZ2lkX3QpKGcpKSkpCiNkZWZpbmUgTUxUT05fZ2V0Z3JuYW0ocykgKChj
cG9pbnRlcikoZ2V0Z3JuYW0oKGNoYXIqKShzKSkpKQoKI2RlZmluZSBNTFRPTl9ncm91cF9uYW1l
KHApICgoY3BvaW50ZXIpKCgoc3RydWN0IGdyb3VwKikocCkpLT5ncl9uYW1lKSkKI2RlZmluZSBN
TFRPTl9ncm91cF9naWQocCkgKCh1aW50KSgoKHN0cnVjdCBncm91cCopKHApKS0+Z3JfZ2lkKSkK
I2RlZmluZSBNTFRPTl9ncm91cF9tZW0ocCkgKChjcG9pbnRlcikoKChzdHJ1Y3QgZ3JvdXAqKShw
KSktPmdyX21lbSkpCgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgVFRZICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAqLwoKZXh0ZXJuIHN0cnVjdCB0ZXJtaW9zIE1MVE9OX3Rlcm1pb3M7CgojZGVmaW5l
IE1MVE9OX3Rlcm1pb3NfaWZsYWcodCkgKCh1aW50KSgoKHN0cnVjdCB0ZXJtaW9zKikodCkpLT5j
X2lmbGFnKSkKI2RlZmluZSBNTFRPTl90ZXJtaW9zX29mbGFnKHQpICgodWludCkoKChzdHJ1Y3Qg
dGVybWlvcyopKHQpKS0+Y19vZmxhZykpCiNkZWZpbmUgTUxUT05fdGVybWlvc19jZmxhZyh0KSAo
KHVpbnQpKCgoc3RydWN0IHRlcm1pb3MqKSh0KSktPmNfY2ZsYWcpKQojZGVmaW5lIE1MVE9OX3Rl
cm1pb3NfbGZsYWcodCkgKCh1aW50KSgoKHN0cnVjdCB0ZXJtaW9zKikodCkpLT5jX2xmbGFnKSkK
I2RlZmluZSBNTFRPTl90ZXJtaW9zX2NjKHQpICgoY3BvaW50ZXIpKCgoc3RydWN0IHRlcm1pb3Mq
KSh0KSktPmNfY2MpKQoKI2RlZmluZSBNTFRPTl9zZXRfdGVybWlvc19pZmxhZyh0LHgpICgoKHN0
cnVjdCB0ZXJtaW9zKikodCkpLT5jX2lmbGFnKSA9ICh4KQojZGVmaW5lIE1MVE9OX3NldF90ZXJt
aW9zX29mbGFnKHQseCkgKCgoc3RydWN0IHRlcm1pb3MqKSh0KSktPmNfb2ZsYWcpID0gKHgpCiNk
ZWZpbmUgTUxUT05fc2V0X3Rlcm1pb3NfY2ZsYWcodCx4KSAoKChzdHJ1Y3QgdGVybWlvcyopKHQp
KS0+Y19jZmxhZykgPSAoeCkKI2RlZmluZSBNTFRPTl9zZXRfdGVybWlvc19sZmxhZyh0LHgpICgo
KHN0cnVjdCB0ZXJtaW9zKikodCkpLT5jX2xmbGFnKSA9ICh4KQoKI2RlZmluZSBNTFRPTl90Y2dl
dGF0dHIoZix0KSAoKGludCkodGNnZXRhdHRyKChmKSwgKHN0cnVjdCB0ZXJtaW9zKikodCkpKSkK
I2RlZmluZSBNTFRPTl90Y3NldGF0dHIoZixhLHQpICgoaW50KSh0Y3NldGF0dHIoKGYpLCAoYSks
IChzdHJ1Y3QgdGVybWlvcyopKHQpKSkpCiNkZWZpbmUgTUxUT05fY2ZnZXRvc3BlZWQodCkgKChp
bnQpKGNmZ2V0b3NwZWVkKChzdHJ1Y3QgdGVybWlvcyopKHQpKSkpCiNkZWZpbmUgTUxUT05fY2Zz
ZXRvc3BlZWQodCxzKSAoKGludCkoY2ZzZXRvc3BlZWQoKHN0cnVjdCB0ZXJtaW9zKikodCksIChz
KSkpKQojZGVmaW5lIE1MVE9OX2NmZ2V0aXNwZWVkKHQpICgoaW50KShjZmdldGlzcGVlZCgoc3Ry
dWN0IHRlcm1pb3MqKSh0KSkpKQojZGVmaW5lIE1MVE9OX2Nmc2V0aXNwZWVkKHQscykgKChpbnQp
KGNmc2V0aXNwZWVkKChzdHJ1Y3QgdGVybWlvcyopKHQpLCAocykpKSkKCi8qIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogICAgICAgICAgICAg
ICAgICAgICAgU2lnbmFscyAgICAgICAgICAgICAgICAgICAgICAqLwovKiAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgojZGVmaW5lIE1MVE9OX3Np
Z2VtcHR5c2V0KHMpICgoaW50KShzaWdlbXB0eXNldCgoc2lnc2V0X3QqKShzKSkpKQojZGVmaW5l
IE1MVE9OX3NpZ2ZpbGxzZXQocykgKChpbnQpKHNpZ2ZpbGxzZXQoKHNpZ3NldF90KikocykpKSkK
I2RlZmluZSBNTFRPTl9zaWdhZGRzZXQoYSxiKSAoKGludCkoc2lnYWRkc2V0KChzaWdzZXRfdCop
KGEpLChiKSkpKQojZGVmaW5lIE1MVE9OX3NpZ2RlbHNldChhLGIpICgoaW50KShzaWdkZWxzZXQo
KHNpZ3NldF90KikoYSksKGIpKSkpCiNkZWZpbmUgTUxUT05fc2lnaXNtZW1iZXIoYSxiKSAoKGlu
dCkoc2lnaXNtZW1iZXIoKHNpZ3NldF90KikoYSksKGIpKSkpCiNkZWZpbmUgTUxUT05fc2lncGVu
ZGluZyhzKSAoKGludCkoc2lncGVuZGluZygoc2lnc2V0X3QqKShzKSkpKQojZGVmaW5lIE1MVE9O
X3NpZ3Byb2NtYXNrKGEsYikgKChpbnQpKHNpZ3Byb2NtYXNrKChhKSwoc2lnc2V0X3QqKShiKSwo
c2lnc2V0X3QqKU5VTEwpKSkKI2RlZmluZSBNTFRPTl9zaWdzdXNwZW5kKGEpICgoaW50KShzaWdz
dXNwZW5kKChzaWdzZXRfdCopKGEpKSkpCgojZW5kaWYgLyogI2lmbmRlZiBfTUxUT05fUE9TSVhf
SCAqLwoK

--------------CBA93EB96730D9F52627BE47
Content-Type: application/x-unknown-content-type-sml_auto_file;
 name="primitive.sml"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="primitive.sml"

KCogQ29weXJpZ2h0IChDKSAxOTk3LTE5OTkgTkVDIFJlc2VhcmNoIEluc3RpdHV0ZS4KICogUGxl
YXNlIHNlZSB0aGUgZmlsZSBMSUNFTlNFIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKikKc3Ry
dWN0dXJlIFBvc2l4UHJpbWl0aXZlID0KICAgc3RydWN0CiAgICAgIHR5cGUgbnVsbFN0cmluZyA9
IHN0cmluZwogICAgICB0eXBlIGNzdHJpbmcgPSBDLkNTLmNzCiAgICAgIHR5cGUgY3N0cmluZ0Fy
cmF5ID0gQy5DU1MuY3NzCgogICAgICB0eXBlIGZkID0gaW50CiAgICAgIHR5cGUgcGlkID0gaW50
CiAgICAgIHR5cGUgdWlkID0gd29yZAogICAgICB0eXBlIGdpZCA9IHdvcmQKICAgICAgdHlwZSBz
aWduYWwgPSBpbnQKICAgICAgdHlwZSBzaXplID0gaW50CiAgICAgIHR5cGUgc3NpemUgPSBpbnQK
ICAgICAgdHlwZSBtb2RlID0gd29yZAogICAgICB0eXBlIHRpbWUgPSBpbnQKICAgICAgZGF0YXR5
cGUgZmlsZV9kZXNjID0gRkQgb2YgaW50CgkgCiAgICAgIHN0cnVjdHVyZSBFcnJvciA9Cgkgc3Ry
dWN0CgkgICAgdHlwZSBzeXNlcnJvciA9IGludAoKCSAgICB2YWwgZ2V0RXJybm8gPSBfcHJpbSAi
TUxUT05fZXJybm8iOiB1bml0IC0+IGludDsKCSAgICB2YWwgY2xlYXJFcnJubyA9IF9wcmltICJN
TFRPTl9jbGVhckVycm5vIjogdW5pdCAtPiB1bml0OwoJICAgIHZhbCBzdHJlcnJvciA9IF9wcmlt
ICJNTFRPTl9zdHJlcnJvciI6IHN5c2Vycm9yIC0+IEMuQ1MuY3M7CgoJICAgIHZhbCBhY2NlcyA9
IF9wcmltICJFQUNDRVMiOiBzeXNlcnJvcjsKCSAgICB2YWwgYWdhaW4gPSBfcHJpbSAiRUFHQUlO
Ijogc3lzZXJyb3I7CgkgICAgdmFsIGJhZGYgPSBfcHJpbSAiRUJBREYiOiBzeXNlcnJvcjsKCSAg
ICB2YWwgYmFkbXNnID0gX3ByaW0gIkVCQURNU0ciOiBzeXNlcnJvcjsKCSAgICB2YWwgYnVzeSA9
IF9wcmltICJFQlVTWSI6IHN5c2Vycm9yOwoJICAgIHZhbCBjYW5jZWxlZCA9IF9wcmltICJFQ0FO
Q0VMRUQiOiBzeXNlcnJvcjsKCSAgICB2YWwgY2hpbGQgPSBfcHJpbSAiRUNISUxEIjogc3lzZXJy
b3I7CgkgICAgdmFsIGRlYWRsayA9IF9wcmltICJFREVBRExLIjogc3lzZXJyb3I7CgkgICAgdmFs
IGRvbSA9IF9wcmltICJFRE9NIjogc3lzZXJyb3I7CgkgICAgdmFsIGV4aXN0ID0gX3ByaW0gIkVF
WElTVCI6IHN5c2Vycm9yOwoJICAgIHZhbCBmYXVsdCA9IF9wcmltICJFRkFVTFQiOiBzeXNlcnJv
cjsKCSAgICB2YWwgZmJpZyA9IF9wcmltICJFRkJJRyI6IHN5c2Vycm9yOwoJICAgIHZhbCBpbnBy
b2dyZXNzID0gX3ByaW0gIkVJTlBST0dSRVNTIjogc3lzZXJyb3I7CgkgICAgdmFsIGludHIgPSBf
cHJpbSAiRUlOVFIiOiBzeXNlcnJvcjsKCSAgICB2YWwgaW52YWwgPSBfcHJpbSAiRUlOVkFMIjog
c3lzZXJyb3I7CgkgICAgdmFsIGlvID0gX3ByaW0gIkVJTyI6IHN5c2Vycm9yOwoJICAgIHZhbCBp
c2RpciA9IF9wcmltICJFSVNESVIiOiBzeXNlcnJvcjsKCSAgICB2YWwgbG9vcCA9IF9wcmltICJF
TE9PUCI6IHN5c2Vycm9yOwoJICAgIHZhbCBtZmlsZSA9IF9wcmltICJFTUZJTEUiOiBzeXNlcnJv
cjsKCSAgICB2YWwgbWxpbmsgPSBfcHJpbSAiRU1MSU5LIjogc3lzZXJyb3I7CgkgICAgdmFsIG1z
Z3NpemUgPSBfcHJpbSAiRU1TR1NJWkUiOiBzeXNlcnJvcjsKCSAgICB2YWwgbmFtZXRvb2xvbmcg
PSBfcHJpbSAiRU5BTUVUT09MT05HIjogc3lzZXJyb3I7CgkgICAgdmFsIG5maWxlID0gX3ByaW0g
IkVORklMRSI6IHN5c2Vycm9yOwoJICAgIHZhbCBub2RldiA9IF9wcmltICJFTk9ERVYiOiBzeXNl
cnJvcjsKCSAgICB2YWwgbm9lbnQgPSBfcHJpbSAiRU5PRU5UIjogc3lzZXJyb3I7CgkgICAgdmFs
IG5vZXhlYyA9IF9wcmltICJFTk9FWEVDIjogc3lzZXJyb3I7CgkgICAgdmFsIG5vbGNrID0gX3By
aW0gIkVOT0xDSyI6IHN5c2Vycm9yOwoJICAgIHZhbCBub21lbSA9IF9wcmltICJFTk9NRU0iOiBz
eXNlcnJvcjsKCSAgICB2YWwgbm9zcGMgPSBfcHJpbSAiRU5PU1BDIjogc3lzZXJyb3I7CgkgICAg
dmFsIG5vc3lzID0gX3ByaW0gIkVOT1NZUyI6IHN5c2Vycm9yOwoJICAgIHZhbCBub3RkaXIgPSBf
cHJpbSAiRU5PVERJUiI6IHN5c2Vycm9yOwoJICAgIHZhbCBub3RlbXB0eSA9IF9wcmltICJFTk9U
RU1QVFkiOiBzeXNlcnJvcjsKCSAgICB2YWwgbm90c3VwID0gX3ByaW0gIkVOT1RTVVAiOiBzeXNl
cnJvcjsKCSAgICB2YWwgbm90dHkgPSBfcHJpbSAiRU5PVFRZIjogc3lzZXJyb3I7CgkgICAgdmFs
IG54aW8gPSBfcHJpbSAiRU5YSU8iOiBzeXNlcnJvcjsKCSAgICB2YWwgcGVybSA9IF9wcmltICJF
UEVSTSI6IHN5c2Vycm9yOwoJICAgIHZhbCBwaXBlID0gX3ByaW0gIkVQSVBFIjogc3lzZXJyb3I7
CgkgICAgdmFsIHJhbmdlID0gX3ByaW0gIkVSQU5HRSI6IHN5c2Vycm9yOwoJICAgIHZhbCByb2Zz
ID0gX3ByaW0gIkVST0ZTIjogc3lzZXJyb3I7CgkgICAgdmFsIHNwaXBlID0gX3ByaW0gIkVTUElQ
RSI6IHN5c2Vycm9yOwoJICAgIHZhbCBzcmNoID0gX3ByaW0gIkVTUkNIIjogc3lzZXJyb3I7Cgkg
ICAgdmFsIHRvb2JpZyA9IF9wcmltICJFMkJJRyI6IHN5c2Vycm9yOwoJICAgIHZhbCB4ZGV2ID0g
X3ByaW0gIkVYREVWIjogc3lzZXJyb3I7CgoJICAgIHZhbCBlcnJvck5hbWVzID0KCSAgICAgICBb
CgkJKGFjY2VzLCAiYWNjZXMiKSwKCQkoYWdhaW4sICJhZ2FpbiIpLAoJCShiYWRmLCAiYmFkZiIp
LAoJCShiYWRtc2csICJiYWRtc2ciKSwKCQkoYnVzeSwgImJ1c3kiKSwKCQkoY2FuY2VsZWQsICJj
YW5jZWxlZCIpLAoJCShjaGlsZCwgImNoaWxkIiksCgkJKGRlYWRsaywgImRlYWRsayIpLAoJCShk
b20sICJkb20iKSwKCQkoZXhpc3QsICJleGlzdCIpLAoJCShmYXVsdCwgImZhdWx0IiksCgkJKGZi
aWcsICJmYmlnIiksCgkJKGlucHJvZ3Jlc3MsICJpbnByb2dyZXNzIiksCgkJKGludHIsICJpbnRy
IiksCgkJKGludmFsLCAiaW52YWwiKSwKCQkoaW8sICJpbyIpLAoJCShpc2RpciwgImlzZGlyIiks
CgkJKGxvb3AsICJsb29wIiksCgkJKG1maWxlLCAibWZpbGUiKSwKCQkobWxpbmssICJtbGluayIp
LAoJCShtc2dzaXplLCAibXNnc2l6ZSIpLAoJCShuYW1ldG9vbG9uZywgIm5hbWV0b29sb25nIiks
CgkJKG5maWxlLCAibmZpbGUiKSwKCQkobm9kZXYsICJub2RldiIpLAoJCShub2VudCwgIm5vZW50
IiksCgkJKG5vZXhlYywgIm5vZXhlYyIpLAoJCShub2xjaywgIm5vbGNrIiksCgkJKG5vbWVtLCAi
bm9tZW0iKSwKCQkobm9zcGMsICJub3NwYyIpLAoJCShub3N5cywgIm5vc3lzIiksCgkJKG5vdGRp
ciwgIm5vdGRpciIpLAoJCShub3RlbXB0eSwgIm5vdGVtcHR5IiksCgkJKG5vdHN1cCwgIm5vdHN1
cCIpLAoJCShub3R0eSwgIm5vdHR5IiksCgkJKG54aW8sICJueGlvIiksCgkJKHBlcm0sICJwZXJt
IiksCgkJKHBpcGUsICJwaXBlIiksCgkJKHJhbmdlLCAicmFuZ2UiKSwKCQkocm9mcywgInJvZnMi
KSwKCQkoc3BpcGUsICJzcGlwZSIpLAoJCShzcmNoLCAic3JjaCIpLAoJCSh0b29iaWcsICJ0b29i
aWciKSwKCQkoeGRldiwgInhkZXYiKQoJCV0KCSBlbmQKICAgICAgCiAgICAgIHN0cnVjdHVyZSBG
aWxlU3lzID0KCSBzdHJ1Y3QKCSAgICBkYXRhdHlwZSBmaWxlX2Rlc2MgPSBkYXRhdHlwZSBmaWxl
X2Rlc2MKCgkgICAgdHlwZSBpbm8gPSBpbnQKCSAgICB0eXBlIGRldiA9IHdvcmQKCSAgICB0eXBl
IHVpZCA9IHVpZAoJICAgIHR5cGUgZ2lkID0gZ2lkCgoJICAgIHN0cnVjdHVyZSBTID0KCSAgICAg
ICBzdHJ1Y3QKCQkgIHR5cGUgbW9kZSA9IHdvcmQKCQkgIHZhbCBpZnNvY2sgPSBfcHJpbSAiU19J
RlNPQ0siOiBtb2RlOwoJCSAgdmFsIGlmc29jayA9IF9wcmltICJTX0lGU09DSyI6IG1vZGU7CgkJ
ICB2YWwgaWZsbmsgPSBfcHJpbSAiU19JRkxOSyI6IG1vZGU7CgkJICB2YWwgaWZyZWcgPSBfcHJp
bSAiU19JRlJFRyI6IG1vZGU7CgkJICB2YWwgaWZibGsgPSBfcHJpbSAiU19JRkJMSyI6IG1vZGU7
CgkJICB2YWwgaWZkaXIgPSBfcHJpbSAiU19JRkRJUiI6IG1vZGU7CgkJICB2YWwgaWZjaHIgPSBf
cHJpbSAiU19JRkNIUiI6IG1vZGU7CgkJICB2YWwgaWZpZm8gPSBfcHJpbSAiU19JRklGTyI6IG1v
ZGU7CgkJICB2YWwgaXJ3eHUgPSBfcHJpbSAiU19JUldYVSI6IG1vZGU7CgkJICB2YWwgaXJ1c3Ig
PSBfcHJpbSAiU19JUlVTUiI6IG1vZGU7CgkJICB2YWwgaXd1c3IgPSBfcHJpbSAiU19JV1VTUiI6
IG1vZGU7CgkJICB2YWwgaXh1c3IgPSBfcHJpbSAiU19JWFVTUiI6IG1vZGU7CgkJICB2YWwgaXJ3
eGcgPSBfcHJpbSAiU19JUldYRyI6IG1vZGU7CgkJICB2YWwgaXJncnAgPSBfcHJpbSAiU19JUkdS
UCI6IG1vZGU7CgkJICB2YWwgaXdncnAgPSBfcHJpbSAiU19JV0dSUCI6IG1vZGU7CgkJICB2YWwg
aXhncnAgPSBfcHJpbSAiU19JWEdSUCI6IG1vZGU7CgkJICB2YWwgaXJ3eG8gPSBfcHJpbSAiU19J
UldYTyI6IG1vZGU7CgkJICB2YWwgaXJvdGggPSBfcHJpbSAiU19JUk9USCI6IG1vZGU7CgkJICB2
YWwgaXdvdGggPSBfcHJpbSAiU19JV09USCI6IG1vZGU7CgkJICB2YWwgaXhvdGggPSBfcHJpbSAi
U19JWE9USCI6IG1vZGU7CgkJICB2YWwgaXN1aWQgPSBfcHJpbSAiU19JU1VJRCI6IG1vZGU7CgkJ
ICB2YWwgaXNnaWQgPSBfcHJpbSAiU19JU0dJRCI6IG1vZGU7CgkgICAgICAgZW5kCgoJICAgIHN0
cnVjdHVyZSBPID0KCSAgICAgICBzdHJ1Y3QKCQkgIHR5cGUgZmxhZ3MgPSB3b3JkCgkJICB2YWwg
YXBwZW5kID0gX3ByaW0gIk9fQVBQRU5EIjogZmxhZ3M7CgkJICB2YWwgY3JlYXQgPSBfcHJpbSAi
T19DUkVBVCI6IGZsYWdzOwoJCSAgdmFsIGV4Y2wgPSBfcHJpbSAiT19FWENMIjogZmxhZ3M7CgkJ
ICB2YWwgbm9jdHR5ID0gX3ByaW0gIk9fTk9DVFRZIjogZmxhZ3M7CgkJICB2YWwgbm9uYmxvY2sg
PSBfcHJpbSAiT19OT05CTE9DSyI6IGZsYWdzOwoJCSAgdmFsIHN5bmMgPSBfcHJpbSAiT19TWU5D
IjogZmxhZ3M7CgkJICB2YWwgdHJ1bmMgPSBfcHJpbSAiT19UUlVOQyI6IGZsYWdzOwogICAgICAg
ICAgICAgICAgICB2YWwgdGV4dCA9IF9wcmltICJPX1RFWFQiOiBmbGFnczsKICAgICAgICAgICAg
ICAgICAgdmFsIGJpbmFyeSA9IF9wcmltICJPX0JJTkFSWSI6IGZsYWdzOwoJICAgICAgIGVuZAoK
CSAgICB2YWwgb19yZG9ubHkgPSBfcHJpbSAiT19SRE9OTFkiOiB3b3JkOwoJICAgIHZhbCBvX3dy
b25seSA9IF9wcmltICJPX1dST05MWSI6IHdvcmQ7CgkgICAgdmFsIG9fcmR3ciA9IF9wcmltICJP
X1JEV1IiOiB3b3JkOwoJICAgIHZhbCBSX09LID0gX3ByaW0gIlJfT0siOiB3b3JkOwoJICAgIHZh
bCBXX09LID0gX3ByaW0gIldfT0siOiB3b3JkOwoJICAgIHZhbCBYX09LID0gX3ByaW0gIlhfT0si
OiB3b3JkOwoJICAgIHZhbCBGX09LID0gX3ByaW0gIkZfT0siOiB3b3JkOwoKCSAgICB2YWwgcHJv
cGVydGllcyA9CgkgICAgICAgWwoJCShfcHJpbSAiX1BDX0xJTktfTUFYIjogaW50OywgIkxJTktf
TUFYIiksCgkJKF9wcmltICJfUENfTUFYX0NBTk9OIjogaW50OywgIk1BWF9DQU5PTiIpLAoJCShf
cHJpbSAiX1BDX01BWF9JTlBVVCI6IGludDssICJNQVhfSU5QVVQiKSwKCQkoX3ByaW0gIl9QQ19O
QU1FX01BWCI6IGludDssICJOQU1FX01BWCIpLAoJCShfcHJpbSAiX1BDX1BBVEhfTUFYIjogaW50
OywgIlBBVEhfTUFYIiksCgkJKF9wcmltICJfUENfUElQRV9CVUYiOiBpbnQ7LCAiUElQRV9CVUYi
KSwKCQkoX3ByaW0gIl9QQ19DSE9XTl9SRVNUUklDVEVEIjogaW50OywgIkNIT1dOX1JFU1RSSUNU
RUQiKSwKCQkoX3ByaW0gIl9QQ19OT19UUlVOQyI6IGludDssICJOT19UUlVOQyIpLAoJCShfcHJp
bSAiX1BDX1ZESVNBQkxFIjogaW50OywgIlZESVNBQkxFIikKCQldCgoJICAgIHN0cnVjdHVyZSBE
aXJlbnQgPQoJICAgICAgIHN0cnVjdAoJCSAgdHlwZSBkaXJlbnQgPSBwb2ludGVyCgoJCSAgdmFs
IGlzTnVsbCA9IF9wcmltICJNTFRPTl9pc051bGwiOiBkaXJlbnQgLT4gYm9vbDsKCQkgIHZhbCBu
YW1lID0gX3ByaW0gIk1MVE9OX2RpcmVudF9uYW1lIjogZGlyZW50IC0+IGNzdHJpbmc7CgkgICAg
ICAgZW5kCgkgICAgCgkgICAgc3RydWN0dXJlIERpcnN0cmVhbSA9CgkgICAgICAgc3RydWN0CgkJ
ICB0eXBlIGRpcnN0cmVhbSA9IHBvaW50ZXIKCgkJICB2YWwgaXNOdWxsID0gX3ByaW0gIk1MVE9O
X2lzTnVsbCI6IGRpcnN0cmVhbSAtPiBib29sOwoJCSAgdmFsIGNsb3NlZGlyID0gX3ByaW0gIk1M
VE9OX2Nsb3NlZGlyIjogZGlyc3RyZWFtIC0+IGludDsKCQkgIHZhbCBvcGVuZGlyID0gX3ByaW0g
Ik1MVE9OX29wZW5kaXIiOiBudWxsU3RyaW5nIC0+IGRpcnN0cmVhbTsKCQkgIHZhbCByZWFkZGly
ID0KCQkgICAgIF9wcmltICJNTFRPTl9yZWFkZGlyIjogZGlyc3RyZWFtIC0+IERpcmVudC5kaXJl
bnQ7CgkJICB2YWwgcmV3aW5kZGlyID0KCQkgICAgIF9wcmltICJNTFRPTl9yZXdpbmRkaXIiOiBk
aXJzdHJlYW0gLT4gdW5pdDsKCSAgICAgICBlbmQKCgkgICAgc3RydWN0dXJlIFN0YXQgPQoJICAg
ICAgIHN0cnVjdAoJCSAgdHlwZSBzdGF0ID0gcG9pbnRlcgoKCQkgIHZhbCBidWZmZXIgPSBfcHJp
bSAiKHVpbnQpJk1MVE9OX3N0YXQiOiBzdGF0OwoKCQkgIHZhbCBkZXYgPSBfcHJpbSAiTUxUT05f
c3RhdF9kZXYiOiBzdGF0IC0+IGRldjsKCQkgIHZhbCBpbm8gPSBfcHJpbSAiTUxUT05fc3RhdF9p
bm8iOiBzdGF0IC0+IGlubzsKCQkgIHZhbCBtb2RlID0gX3ByaW0gIk1MVE9OX3N0YXRfbW9kZSI6
IHN0YXQgLT4gd29yZDsKCQkgIHZhbCBubGluayA9IF9wcmltICJNTFRPTl9zdGF0X25saW5rIjog
c3RhdCAtPiBpbnQ7CgkJICB2YWwgdWlkID0gX3ByaW0gIk1MVE9OX3N0YXRfdWlkIjogc3RhdCAt
PiB1aWQ7CgkJICB2YWwgZ2lkID0gX3ByaW0gIk1MVE9OX3N0YXRfZ2lkIjogc3RhdCAtPiBnaWQ7
CgkJICB2YWwgc2l6ZSA9IF9wcmltICJNTFRPTl9zdGF0X3NpemUiOiBzdGF0IC0+IGludDsKCQkg
IHZhbCBhdGltZSA9IF9wcmltICJNTFRPTl9zdGF0X2F0aW1lIjogc3RhdCAtPiB0aW1lOwoJCSAg
dmFsIG10aW1lID0gX3ByaW0gIk1MVE9OX3N0YXRfbXRpbWUiOiBzdGF0IC0+IHRpbWU7CgkJICB2
YWwgY3RpbWUgPSBfcHJpbSAiTUxUT05fc3RhdF9jdGltZSI6IHN0YXQgLT4gdGltZTsKCgkJICB2
YWwgZnN0YXQgPSBfcHJpbSAiTUxUT05fZnN0YXQiOiBmZCAqIHN0YXQgLT4gaW50OwoJCSAgdmFs
IGxzdGF0ID0gX3ByaW0gIk1MVE9OX2xzdGF0IjogbnVsbFN0cmluZyAqIHN0YXQgLT4gaW50OwoJ
CSAgdmFsIHN0YXQgPSBfcHJpbSAiTUxUT05fc3RhdCI6IG51bGxTdHJpbmcgKiBzdGF0IC0+IGlu
dDsKCSAgICAgICBlbmQKCgkgICAgc3RydWN0dXJlIFV0aW1idWYgPQoJICAgICAgIHN0cnVjdAoJ
CSAgdHlwZSB1dGltYnVmID0gcG9pbnRlcgoKCQkgIHZhbCBidWZmZXIgPSBfcHJpbSAiKHVpbnQp
Jk1MVE9OX3V0aW1idWYiOiB1dGltYnVmOwoJCSAgdmFsIHNldEFjdGltZSA9CgkJICAgICBfcHJp
bSAiTUxUT05fc2V0X3V0aW1idWZfYWN0aW1lIgoJCSAgICAgOiB1dGltYnVmICogdGltZSAtPiB1
bml0OwoJCSAgdmFsIHNldE1vZHRpbWUgPQoJCSAgICAgX3ByaW0gIk1MVE9OX3NldF91dGltYnVm
X21vZHRpbWUiCgkJICAgICA6IHV0aW1idWYgKiB0aW1lIC0+IHVuaXQ7CgkJICB2YWwgdXRpbWUg
PSBfcHJpbSAiTUxUT05fdXRpbWUiOiBudWxsU3RyaW5nICogdXRpbWJ1ZiAtPiBpbnQ7CgkgICAg
ICAgZW5kCgoJICAgIHZhbCBhY2Nlc3MgPSBfcHJpbSAiTUxUT05fYWNjZXNzIjogbnVsbFN0cmlu
ZyAqIHdvcmQgLT4gaW50OwoJICAgIHZhbCBjaGRpciA9IF9wcmltICJNTFRPTl9jaGRpciI6IG51
bGxTdHJpbmcgLT4gaW50OwoJICAgIHZhbCBjaG1vZCA9IF9wcmltICJNTFRPTl9jaG1vZCI6IG51
bGxTdHJpbmcgKiBtb2RlIC0+IGludDsKCSAgICB2YWwgY2hvd24gPSBfcHJpbSAiTUxUT05fY2hv
d24iOiBudWxsU3RyaW5nICogdWlkICogZ2lkIC0+IGludDsKCSAgICB2YWwgZmNobW9kID0gX3By
aW0gImZjaG1vZCI6IGZkICogbW9kZSAtPiBpbnQ7CgkgICAgdmFsIGZjaG93biA9IF9wcmltICJm
Y2hvd24iOiBmZCAqIHVpZCAqIGdpZCAtPiBpbnQ7CgkgICAgdmFsIGZwYXRoY29uZiA9IF9wcmlt
ICJwYXRoY29uZiI6IGZkICogaW50IC0+IGludDsKCSAgICB2YWwgZnRydW5jYXRlID0gX3ByaW0g
Ik1MVE9OX2Z0cnVuY2F0ZSI6IGludCAqIGludCAtPiBpbnQ7CgkgICAgdmFsIGdldGN3ZCA9IF9w
cmltICJNTFRPTl9nZXRjd2QiOiBjaGFyIGFycmF5ICogc2l6ZSAtPiBjc3RyaW5nOwoJICAgIHZh
bCBsaW5rID0gX3ByaW0gIk1MVE9OX2xpbmsiOiBudWxsU3RyaW5nICogbnVsbFN0cmluZyAtPiBp
bnQ7CgkgICAgdmFsIG1rZGlyID0gX3ByaW0gIk1MVE9OX21rZGlyIjogbnVsbFN0cmluZyAqIHdv
cmQgLT4gaW50OwoJICAgIHZhbCBta2ZpZm8gPSBfcHJpbSAiTUxUT05fbWtmaWZvIjogbnVsbFN0
cmluZyAqIHdvcmQgLT4gaW50OwoJICAgIHZhbCBvcGVubiA9IF9wcmltICJNTFRPTl9vcGVuIjog
bnVsbFN0cmluZyAqIHdvcmQgKiBtb2RlIC0+IGZkOwoJICAgIHZhbCBwYXRoY29uZiA9IF9wcmlt
ICJNTFRPTl9wYXRoY29uZiI6IG51bGxTdHJpbmcgKiBpbnQgLT4gaW50OwoJICAgIHZhbCByZWFk
bGluayA9CgkgICAgICAgX3ByaW0gIk1MVE9OX3JlYWRsaW5rIjogbnVsbFN0cmluZyAqIFdvcmQ4
QXJyYXkuYXJyYXkgKiBpbnQgLT4gaW50OwoJICAgIHZhbCByZW5hbWUgPSBfcHJpbSAiTUxUT05f
cmVuYW1lIjogbnVsbFN0cmluZyAqIG51bGxTdHJpbmcgLT4gaW50OwoJICAgIHZhbCBybWRpciA9
IF9wcmltICJNTFRPTl9ybWRpciI6IG51bGxTdHJpbmcgLT4gaW50OwoJICAgIHZhbCBzeW1saW5r
ID0gX3ByaW0gIk1MVE9OX3N5bWxpbmsiOiBudWxsU3RyaW5nICogbnVsbFN0cmluZyAtPiBpbnQ7
CgkgICAgdmFsIHVtYXNrID0gX3ByaW0gInVtYXNrIjogd29yZCAtPiB3b3JkOwoJICAgIHZhbCB1
bmxpbmsgPSBfcHJpbSAiTUxUT05fdW5saW5rIjogbnVsbFN0cmluZyAtPiBpbnQ7CgoJICAgIHN0
cnVjdHVyZSBTVCA9CgkgICAgICAgc3RydWN0CgkJICB2YWwgaXNEaXIgPSBfcHJpbSAiU19JU0RJ
UiI6IHdvcmQgLT4gYm9vbDsKCQkgIHZhbCBpc0NociA9IF9wcmltICJTX0lTQ0hSIjogd29yZCAt
PiBib29sOwoJCSAgdmFsIGlzQmxrID0gX3ByaW0gIlNfSVNCTEsiOiB3b3JkIC0+IGJvb2w7CgkJ
ICB2YWwgaXNSZWcgPSBfcHJpbSAiU19JU1JFRyI6IHdvcmQgLT4gYm9vbDsKCQkgIHZhbCBpc0ZJ
Rk8gPSBfcHJpbSAiU19JU0ZJRk8iOiB3b3JkIC0+IGJvb2w7CgkJICB2YWwgaXNMaW5rID0gX3By
aW0gIlNfSVNMTksiOiB3b3JkIC0+IGJvb2w7CgkJICB2YWwgaXNTb2NrID0gX3ByaW0gIlNfSVNT
T0NLIjogd29yZCAtPiBib29sOwoJICAgICAgIGVuZAoJIGVuZAoKICAgICAgc3RydWN0dXJlIElP
ID0KCSBzdHJ1Y3QKCSAgICB2YWwgRl9EVVBGRCA9IF9wcmltICJGX0RVUEZEIjogaW50OwoJICAg
IHZhbCBGX0dFVEZEID0gX3ByaW0gIkZfR0VURkQiOiBpbnQ7CgkgICAgdmFsIEZfU0VURkQgPSBf
cHJpbSAiRl9TRVRGRCI6IGludDsKCSAgICB2YWwgRl9HRVRGTCA9IF9wcmltICJGX0dFVEZMIjog
aW50OwoJICAgIHZhbCBGX1NFVEZMID0gX3ByaW0gIkZfU0VURkwiOiBpbnQ7CgkgICAgdmFsIEZf
R0VUTEsgPSBfcHJpbSAiRl9HRVRMSyI6IGludDsKCSAgICB2YWwgRl9TRVRMSyA9IF9wcmltICJG
X1NFVExLIjogaW50OwoJICAgIHZhbCBGX1JETENLID0gX3ByaW0gIkZfUkRMQ0siOiBpbnQ7Cgkg
ICAgdmFsIEZfV1JMQ0sgPSBfcHJpbSAiRl9XUkxDSyI6IGludDsKCSAgICB2YWwgRl9VTkxDSyA9
IF9wcmltICJGX1VOTENLIjogaW50OwoJICAgIHZhbCBGX1NFVExLVyA9IF9wcmltICJGX1NFVExL
VyI6IGludDsKCSAgICB2YWwgRl9HRVRPV04gPSBfcHJpbSAiRl9HRVRPV04iOiBpbnQ7CgkgICAg
dmFsIEZfU0VUT1dOID0gX3ByaW0gIkZfU0VUT1dOIjogaW50OwoJICAgIHZhbCBPX0FDQ01PREUg
PSBfcHJpbSAiT19BQ0NNT0RFIjogd29yZDsKCSAgICB2YWwgU0VFS19TRVQgPSBfcHJpbSAiU0VF
S19TRVQiOiBpbnQ7CgkgICAgdmFsIFNFRUtfQ1VSID0gX3ByaW0gIlNFRUtfQ1VSIjogaW50OwoJ
ICAgIHZhbCBTRUVLX0VORCA9IF9wcmltICJTRUVLX0VORCI6IGludDsKCgkgICAgc3RydWN0dXJl
IEZEID0KCSAgICAgICBzdHJ1Y3QKCQkgIHR5cGUgZmxhZ3MgPSB3b3JkCgkJICB2YWwgY2xvZXhl
YyA9IF9wcmltICJGRF9DTE9FWEVDIjogZmxhZ3M7CgkgICAgICAgZW5kCgkgICAgCgkgICAgZGF0
YXR5cGUgZmlsZV9kZXNjID0gZGF0YXR5cGUgZmlsZV9kZXNjCgkgICAgdHlwZSBwaWQgPSBwaWQK
CgkgICAgc3RydWN0dXJlIEZsb2NrID0KCSAgICAgICBzdHJ1Y3QKCQkgIHR5cGUgZmxvY2sgPSBw
b2ludGVyCgoJCSAgdmFsIGJ1ZmZlciA9IF9wcmltICIodWludCkmTUxUT05fZmxvY2siOiBmbG9j
azsKCgkJICB2YWwgdG9JbnQgPSBfcHJpbSAiY2FzdEludCI6IGZsb2NrIC0+IGludDsKCQkgICAg
IAoJCSAgdmFsIHR5cCA9IF9wcmltICJNTFRPTl9mbG9ja190eXBlIjogZmxvY2sgLT4gaW50OwoJ
CSAgdmFsIHdoZW5jZSA9IF9wcmltICJNTFRPTl9mbG9ja193aGVuY2UiOiBmbG9jayAtPiBpbnQ7
CgkJICB2YWwgc3RhcnQgPSBfcHJpbSAiTUxUT05fZmxvY2tfc3RhcnQiOiBmbG9jayAtPiBpbnQ7
CgkJICB2YWwgbGVuID0gX3ByaW0gIk1MVE9OX2Zsb2NrX2xlbiI6IGZsb2NrIC0+IGludDsKCQkg
IHZhbCBwaWQgPSBfcHJpbSAiTUxUT05fZmxvY2tfcGlkIjogZmxvY2sgLT4gaW50OwoKCQkgIHZh
bCBzZXRUeXBlID0KCQkgICAgIF9wcmltICJNTFRPTl9zZXRfZmxvY2tfdHlwZSI6IGZsb2NrICog
aW50IC0+IHVuaXQ7CgkJICB2YWwgc2V0V2hlbmNlID0KCQkgICAgIF9wcmltICJNTFRPTl9zZXRf
ZmxvY2tfd2hlbmNlIjogZmxvY2sgKiBpbnQgLT4gdW5pdDsKCQkgIHZhbCBzZXRTdGFydCA9CgkJ
ICAgICBfcHJpbSAiTUxUT05fc2V0X2Zsb2NrX3N0YXJ0IjogZmxvY2sgKiBpbnQgLT4gdW5pdDsK
CQkgIHZhbCBzZXRMZW4gPQoJCSAgICAgX3ByaW0gIk1MVE9OX3NldF9mbG9ja19sZW4iOiBmbG9j
ayAqIGludCAtPiB1bml0OwoJCSAgdmFsIHNldFBpZCA9CgkJICAgICBfcHJpbSAiTUxUT05fc2V0
X2Zsb2NrX3BpZCI6IGZsb2NrICogaW50IC0+IHVuaXQ7CgkgICAgICAgZW5kCgkgICAgCgkgICAg
dmFsIGNsb3NlID0gX3ByaW0gImNsb3NlIjogZmQgLT4gaW50OwoJICAgIHZhbCBkdXAgPSBfcHJp
bSAiZHVwIjogZmQgLT4gZmQ7CgkgICAgdmFsIGR1cDIgPSBfcHJpbSAiZHVwMiI6IGZkICogZmQg
LT4gZmQ7CgkgICAgdmFsIGZjbnRsMiA9IF9wcmltICJmY250bCI6IGZkICogaW50IC0+IGludDsK
CSAgICB2YWwgZmNudGwzID0gX3ByaW0gImZjbnRsIjogZmQgKiBpbnQgKiBpbnQgLT4gaW50OwoJ
ICAgIHZhbCBmc3luYyA9IF9wcmltICJmc3luYyI6IGZkIC0+IGludDsKCSAgICB2YWwgbHNlZWsg
PSBfcHJpbSAibHNlZWsiOiBmZCAqIGludCAqIGludCAtPiBpbnQ7CgkgICAgdmFsIHBpcGUgPSBf
cHJpbSAiTUxUT05fcGlwZSI6IGZkIGFycmF5IC0+IGludDsKCSAgICB2YWwgcmVhZCA9IF9wcmlt
ICJNTFRPTl9yZWFkIjogZmQgKiB3b3JkOCBhcnJheSAqIGludCAqIHNpemUgLT4gc3NpemU7Cgkg
ICAgdmFsIHdyaXRlID0KCSAgICAgICBfcHJpbSAiTUxUT05fd3JpdGUiOiBmZCAqIHdvcmQ4IHZl
Y3RvciAqIGludCAqIHNpemUgLT4gc3NpemU7CgkgZW5kCSAgICAgICAKCiAgICAgIHN0cnVjdHVy
ZSBQcm9jRW52ID0KCSBzdHJ1Y3QKCSAgICB2YWwgTUxUT05fbnVtZ3JvdXBzID0gX3ByaW0gIk1M
VE9OX251bWdyb3VwcyI6IGludDsKCSAgICB2YWwgc3lzY29uZk5hbWVzID0KCSAgICAgICBbCgkJ
KF9wcmltICJfU0NfQVJHX01BWCI6IGludDssICJBUkdfTUFYIiksCgkJKF9wcmltICJfU0NfQ0hJ
TERfTUFYIjogaW50OywgIkNISUxEX01BWCIpLAoJCShfcHJpbSAiX1NDX0NMS19UQ0siOiBpbnQ7
LCAiQ0xLX1RDSyIpLAoJCShfcHJpbSAiX1NDX1NUUkVBTV9NQVgiOiBpbnQ7LCAiU1RSRUFNX01B
WCIpLAoJCShfcHJpbSAiX1NDX1RaTkFNRV9NQVgiOiBpbnQ7LCAiVFpOQU1FX01BWCIpLAoJCShf
cHJpbSAiX1NDX09QRU5fTUFYIjogaW50OywgIk9QRU5fTUFYIiksCgkJKF9wcmltICJfU0NfSk9C
X0NPTlRST0wiOiBpbnQ7LCAiSk9CX0NPTlRST0wiKSwKCQkoX3ByaW0gIl9TQ19TQVZFRF9JRFMi
OiBpbnQ7LCAiU0FWRURfSURTIiksCgkJKF9wcmltICJfU0NfVkVSU0lPTiI6IGludDssICJWRVJT
SU9OIiksCgkJKF9wcmltICJfU0NfQkNfQkFTRV9NQVgiOiBpbnQ7LCAiQkNfQkFTRV9NQVgiKSwK
CQkoX3ByaW0gIl9TQ19CQ19ESU1fTUFYIjogaW50OywgIkJDX0RJTV9NQVgiKSwKCQkoX3ByaW0g
Il9TQ19CQ19TQ0FMRV9NQVgiOiBpbnQ7LCAiQkNfU0NBTEVfTUFYIiksCgkJKF9wcmltICJfU0Nf
QkNfU1RSSU5HX01BWCI6IGludDssICJCQ19TVFJJTkdfTUFYIiksCgkJKF9wcmltICJfU0NfQ09M
TF9XRUlHSFRTX01BWCI6IGludDssICJDT0xMX1dFSUdIVFNfTUFYIiksCgkJKF9wcmltICJfU0Nf
RVhQUl9ORVNUX01BWCI6IGludDssICJFWFBSX05FU1RfTUFYIiksCgkJKF9wcmltICJfU0NfTElO
RV9NQVgiOiBpbnQ7LCAiTElORV9NQVgiKSwKCQkoX3ByaW0gIl9TQ19SRV9EVVBfTUFYIjogaW50
OywgIlJFX0RVUF9NQVgiKSwKCQkoX3ByaW0gIl9TQ18yX1ZFUlNJT04iOiBpbnQ7LCAiMl9WRVJT
SU9OIiksCgkJKF9wcmltICJfU0NfMl9GT1JUX0RFViI6IGludDssICIyX0ZPUlRfREVWIiksCgkJ
KF9wcmltICJfU0NfMl9GT1JUX1JVTiI6IGludDssICIyX0ZPUlRfUlVOIiksCgkJKF9wcmltICJf
U0NfMl9TV19ERVYiOiBpbnQ7LCAiMl9TV19ERVYiKQoJCV0KCSAgICAgICAKCSAgICB0eXBlIHBp
ZCA9IHBpZAoJICAgIHR5cGUgZ2lkID0gZ2lkCgkgICAgdHlwZSB1aWQgPSB1aWQKCSAgICBkYXRh
dHlwZSBmaWxlX2Rlc2MgPSBkYXRhdHlwZSBmaWxlX2Rlc2MKCgkgICAgdmFsIGdldHBpZCA9IF9w
cmltICJnZXRwaWQiOiB1bml0IC0+IHBpZDsKCSAgICB2YWwgZ2V0cHBpZCA9IF9wcmltICJnZXRw
cGlkIjogdW5pdCAtPiBwaWQ7CgkgICAgdmFsIGdldHVpZCA9IF9wcmltICJnZXR1aWQiOiB1bml0
IC0+IHVpZDsKCSAgICB2YWwgZ2V0ZXVpZCA9IF9wcmltICJnZXRldWlkIjogdW5pdCAtPiB1aWQ7
CgkgICAgdmFsIGdldGdpZCA9IF9wcmltICJnZXRnaWQiOiB1bml0IC0+IGdpZDsKCSAgICB2YWwg
Z2V0ZWdpZCA9IF9wcmltICJnZXRlZ2lkIjogdW5pdCAtPiBnaWQ7CgkgICAgdmFsIHNldHVpZCA9
IF9wcmltICJzZXR1aWQiOiB1aWQgLT4gdW5pdDsKCSAgICB2YWwgc2V0Z2lkID0gX3ByaW0gInNl
dGdpZCI6IGdpZCAtPiB1bml0OwoJICAgIHZhbCBnZXRncm91cHMgPSBfcHJpbSAiTUxUT05fZ2V0
Z3JvdXBzIjogZ2lkIGFycmF5IC0+IGludDsKCSAgICB2YWwgZ2V0bG9naW4gPSBfcHJpbSAiTUxU
T05fZ2V0bG9naW4iOiB1bml0IC0+IGNzdHJpbmc7CgkgICAgdmFsIGdldHBncnAgPSBfcHJpbSAi
Z2V0cGdycCI6IHVuaXQgLT4gcGlkOwoJICAgIHZhbCBzZXRzaWQgPSBfcHJpbSAic2V0c2lkIjog
dW5pdCAtPiBwaWQ7CgkgICAgdmFsIHNldHBnaWQgPSBfcHJpbSAic2V0cGdpZCI6IHBpZCAqIGdp
ZCAtPiB1bml0OwoKCSAgICBzdHJ1Y3R1cmUgVW5hbWUgPQoJICAgICAgIHN0cnVjdAoJCSAgdHlw
ZSB1bmFtZSA9IHBvaW50ZXIKCgkJICB2YWwgYnVmZmVyID0gX3ByaW0gIih1aW50KSZNTFRPTl91
dHNuYW1lIjogdW5hbWU7CgkJICAgICAKCQkgIHZhbCB1bmFtZSA9IF9wcmltICJNTFRPTl91bmFt
ZSI6IHVuYW1lIC0+IGludDsKCQkgICAgIAoJCSAgdmFsIHN5c25hbWUgPQoJCSAgICAgX3ByaW0g
Ik1MVE9OX3VuYW1lX3N5c25hbWUiOiB1bmFtZSAtPiBjc3RyaW5nOwoJCSAgdmFsIG5vZGVuYW1l
ID0KCQkgICAgIF9wcmltICJNTFRPTl91bmFtZV9ub2RlbmFtZSI6IHVuYW1lIC0+IGNzdHJpbmc7
CgkJICB2YWwgcmVsZWFzZSA9CgkJICAgICBfcHJpbSAiTUxUT05fdW5hbWVfcmVsZWFzZSI6IHVu
YW1lIC0+IGNzdHJpbmc7CgkJICB2YWwgdmVyc2lvbiA9CgkJICAgICBfcHJpbSAiTUxUT05fdW5h
bWVfdmVyc2lvbiI6IHVuYW1lIC0+IGNzdHJpbmc7CgkJICB2YWwgbWFjaGluZSA9CgkJICAgICBf
cHJpbSAiTUxUT05fdW5hbWVfbWFjaGluZSI6IHVuYW1lIC0+IGNzdHJpbmc7CgkgICAgICAgZW5k
CgoJICAgIHN0cnVjdHVyZSBUbXMgPQoJICAgICAgIHN0cnVjdAoJCSAgdHlwZSB0bXMgPSBwb2lu
dGVyCgoJCSAgdmFsIGJ1ZmZlciA9IF9wcmltICIodWludCkmTUxUT05fdG1zIjogdG1zOwoKCQkg
IHZhbCB1dGltZSA9IF9wcmltICJNTFRPTl90bXNfdXRpbWUiOiB0bXMgLT4gaW50OwoJCSAgdmFs
IHN0aW1lID0gX3ByaW0gIk1MVE9OX3Rtc19zdGltZSI6IHRtcyAtPiBpbnQ7CgkJICB2YWwgY3V0
aW1lID0gX3ByaW0gIk1MVE9OX3Rtc19jdXRpbWUiOiB0bXMgLT4gaW50OwoJCSAgdmFsIGNzdGlt
ZSA9IF9wcmltICJNTFRPTl90bXNfY3N0aW1lIjogdG1zIC0+IGludDsKCSAgICAgICBlbmQKCgkg
ICAgdmFsIGN0ZXJtaWQgPSBfcHJpbSAiTUxUT05fY3Rlcm1pZCI6IHVuaXQgLT4gY3N0cmluZzsK
CSAgICB2YWwgZW52aXJvbiA9IF9wcmltICJtbHRvblN0YXRlLmVudmlyb24iOiBjc3RyaW5nQXJy
YXk7CgkgICAgdmFsIGdldGVudiA9IF9wcmltICJNTFRPTl9nZXRlbnYiOiBudWxsU3RyaW5nIC0+
IGNzdHJpbmc7CgkgICAgdmFsIGlzYXR0eSA9IF9wcmltICJpc2F0dHkiOiBmZCAtPiBib29sOwoJ
ICAgIHZhbCBzeXNjb25mID0gX3ByaW0gInN5c2NvbmYiOiBpbnQgLT4gaW50OwoJICAgIHZhbCB0
aW1lcyA9IF9wcmltICJNTFRPTl90aW1lcyI6IFRtcy50bXMgLT4gaW50OwoJICAgIHZhbCB0dHlu
YW1lID0gX3ByaW0gIk1MVE9OX3R0eW5hbWUiOiBmZCAtPiBjc3RyaW5nOwoJIGVuZCAKCiAgICAg
IHN0cnVjdHVyZSBQcm9jZXNzID0KCSBzdHJ1Y3QKCSAgICB2YWwgd25vaGFuZyA9IF9wcmltICJX
Tk9IQU5HIjogd29yZDsKCSAgICBzdHJ1Y3R1cmUgVyA9CgkgICAgICAgc3RydWN0CgkJICB0eXBl
IGZsYWdzID0gd29yZAoJCSAgdmFsIHVudHJhY2VkID0gX3ByaW0gIldVTlRSQUNFRCI6IGZsYWdz
OwoJICAgICAgIGVuZAoJICAgIAoJICAgIHR5cGUgcGlkID0gcGlkCgkgICAgdHlwZSBzdGF0dXMg
PSBpbnQKCgkgICAgdmFsIGFsYXJtID0gX3ByaW0gImFsYXJtIjogaW50IC0+IGludDsKCSAgICB2
YWwgZXhlYyA9CgkgICAgICAgX3ByaW0gIk1MVE9OX2V4ZWMiOiBudWxsU3RyaW5nICogbnVsbFN0
cmluZyBhcnJheSAtPiBpbnQ7CgkgICAgdmFsIGV4ZWNlID0KCSAgICAgICBfcHJpbSAiTUxUT05f
ZXhlY2UiCgkgICAgICAgOiBudWxsU3RyaW5nICogbnVsbFN0cmluZyBhcnJheSAqIG51bGxTdHJp
bmcgYXJyYXkgLT4gaW50OwoJICAgIHZhbCBleGVjcCA9CgkgICAgICAgX3ByaW0gIk1MVE9OX2V4
ZWNwIjogbnVsbFN0cmluZyAqIG51bGxTdHJpbmcgYXJyYXkgLT4gaW50OwoJICAgIHZhbCBleGl0
ID0gX3ByaW0gImV4aXQiOiBpbnQgLT4gdW5pdDsKCSAgICB2YWwgZm9yayA9IF9wcmltICJmb3Jr
IjogdW5pdCAtPiBwaWQ7CgkgICAgdmFsIGtpbGwgPSBfcHJpbSAia2lsbCI6IHBpZCAqIHNpZ25h
bCAtPiBpbnQ7CgkgICAgdmFsIHBhdXNlID0gX3ByaW0gInBhdXNlIjogdW5pdCAtPiBpbnQ7Cgkg
ICAgdmFsIHNsZWVwID0gX3ByaW0gInNsZWVwIjogaW50IC0+IGludDsKCSAgICB2YWwgd2FpdHBp
ZCA9CgkgICAgICAgX3ByaW0gIk1MVE9OX3dhaXRwaWQiOiBwaWQgKiBzdGF0dXMgcmVmICogaW50
IC0+IHBpZDsKCgkgICAgdmFsIGlmRXhpdGVkID0gX3ByaW0gIldJRkVYSVRFRCI6IHN0YXR1cyAt
PiBib29sOwoJICAgIHZhbCBleGl0U3RhdHVzID0gX3ByaW0gIldFWElUU1RBVFVTIjogc3RhdHVz
IC0+IGludDsKCSAgICB2YWwgaWZTaWduYWxlZCA9IF9wcmltICJXSUZTSUdOQUxFRCI6IHN0YXR1
cyAtPiBib29sOwoJICAgIHZhbCB0ZXJtU2lnID0gX3ByaW0gIldURVJNU0lHIjogc3RhdHVzIC0+
IHNpZ25hbDsKCSAgICB2YWwgaWZTdG9wcGVkID0gX3ByaW0gIldJRlNUT1BQRUQiOiBzdGF0dXMg
LT4gYm9vbDsKCSAgICB2YWwgc3RvcFNpZyA9IF9wcmltICJXU1RPUFNJRyI6IHN0YXR1cyAtPiBz
aWduYWw7CgkgZW5kCiAgICAgIAogICAgICBzdHJ1Y3R1cmUgU2lnbmFsID0KCSBzdHJ1Y3QKCSAg
ICB0eXBlIHNpZ25hbCA9IHNpZ25hbAoKCSAgICB0eXBlIGhvdyA9IGludAoJICAgIHZhbCBibG9j
ayA9IF9wcmltICJTSUdfQkxPQ0siOiBob3c7CgkgICAgdmFsIHVuYmxvY2sgPSBfcHJpbSAiU0lH
X1VOQkxPQ0siOiBob3c7CgkgICAgdmFsIHNldG1hc2sgPSBfcHJpbSAiU0lHX1NFVE1BU0siOiBo
b3c7CgoJICAgIHR5cGUgc2lnc2V0ID0gd29yZCByZWYKCSAgICAgICAKCSAgICB0eXBlIHNpZ251
bSA9IGludAoJICAgIHZhbCBzaWdlbXB0eXNldCA9IF9wcmltICJNTFRPTl9zaWdlbXB0eXNldCI6
IHNpZ3NldCAtPiBpbnQ7CgkgICAgdmFsIHNpZ2ZpbGxzZXQgPSBfcHJpbSAiTUxUT05fc2lnZmls
bHNldCI6IHNpZ3NldCAtPiBpbnQ7CgkgICAgdmFsIHNpZ2FkZHNldCA9IF9wcmltICJNTFRPTl9z
aWdhZGRzZXQiOiBzaWdzZXQgKiBzaWdudW0gLT4gaW50OwoJICAgIHZhbCBzaWdkZWxzZXQgPSBf
cHJpbSAiTUxUT05fc2lnZGVsc2V0Ijogc2lnc2V0ICogc2lnbnVtIC0+IGludDsKCSAgICB2YWwg
c2lnaXNtZW1iZXIgPSBfcHJpbSAiTUxUT05fc2lnaXNtZW1iZXIiOiBzaWdzZXQgKiBzaWdudW0g
LT4gaW50OwoJICAgIHZhbCBzaWdwZW5kaW5nID0gX3ByaW0gIk1MVE9OX3NpZ3BlbmRpbmciOiBz
aWdzZXQgLT4gaW50OwoJICAgIHZhbCBzaWdwcm9jbWFzayA9IF9wcmltICJNTFRPTl9zaWdwcm9j
bWFzayI6IGhvdyAqIHNpZ3NldCAtPiBpbnQ7CgkgICAgdmFsIHNpZ3N1c3BlbmQgPSBfcHJpbSAi
TUxUT05fc2lnc3VzcGVuZCI6IHNpZ3NldCAtPiBpbnQ7CgoJICAgIHZhbCBhYnJ0ID0gX3ByaW0g
IlNJR0FCUlQiOiBzaWduYWw7CgkgICAgdmFsIGFscm0gPSBfcHJpbSAiU0lHQUxSTSI6IHNpZ25h
bDsKCSAgICB2YWwgYnVzID0gX3ByaW0gIiBTSUdCVVMiOiBzaWduYWw7CgkgICAgdmFsIGNobGQg
PSBfcHJpbSAiU0lHQ0hMRCI6IHNpZ25hbDsKCSAgICB2YWwgY29udCA9IF9wcmltICJTSUdDT05U
Ijogc2lnbmFsOwoJICAgIHZhbCBmcGUgPSBfcHJpbSAiU0lHRlBFIjogc2lnbmFsOwoJICAgIHZh
bCBodXAgPSBfcHJpbSAiU0lHSFVQIjogc2lnbmFsOwoJICAgIHZhbCBpbGwgPSBfcHJpbSAiU0lH
SUxMIjogc2lnbmFsOwoJICAgIHZhbCBpbnQgPSBfcHJpbSAiU0lHSU5UIjogc2lnbmFsOwoJICAg
IHZhbCBraWxsID0gX3ByaW0gIlNJR0tJTEwiOiBzaWduYWw7CgkgICAgdmFsIHBpcGUgPSBfcHJp
bSAiU0lHUElQRSI6IHNpZ25hbDsKCSAgICB2YWwgcXVpdCA9IF9wcmltICJTSUdRVUlUIjogc2ln
bmFsOwoJICAgIHZhbCBzZWd2ID0gX3ByaW0gIlNJR1NFR1YiOiBzaWduYWw7CgkgICAgdmFsIHN0
b3AgPSBfcHJpbSAiU0lHU1RPUCI6IHNpZ25hbDsKCSAgICB2YWwgdGVybSA9IF9wcmltICJTSUdU
RVJNIjogc2lnbmFsOwoJICAgIHZhbCB0c3RwID0gX3ByaW0gIlNJR1RTVFAiOiBzaWduYWw7Cgkg
ICAgdmFsIHR0aW4gPSBfcHJpbSAiU0lHVFRJTiI6IHNpZ25hbDsKCSAgICB2YWwgdHRvdSA9IF9w
cmltICJTSUdUVE9VIjogc2lnbmFsOwoJICAgIHZhbCB1c3IxID0gX3ByaW0gIlNJR1VTUjEiOiBz
aWduYWw7CgkgICAgdmFsIHVzcjIgPSBfcHJpbSAiU0lHVVNSMiI6IHNpZ25hbDsKCSBlbmQKICAg
ICAgCiAgICAgIHN0cnVjdHVyZSBTeXNEQiA9Cgkgc3RydWN0CgkgICAgdHlwZSBnaWQgPSBnaWQK
CSAgICB0eXBlIHVpZCA9IHVpZAoKCSAgICBzdHJ1Y3R1cmUgUGFzc3dkID0KCSAgICAgICBzdHJ1
Y3QKCQkgIHR5cGUgcGFzc3dkID0gcG9pbnRlcgoKCQkgIHZhbCBpc051bGwgPSBfcHJpbSAiTUxU
T05faXNOdWxsIjogcGFzc3dkIC0+IGJvb2w7CgkJICB2YWwgbmFtZSA9IF9wcmltICJNTFRPTl9w
YXNzd2RfbmFtZSI6IHBhc3N3ZCAtPiBjc3RyaW5nOwoJCSAgdmFsIHVpZCA9IF9wcmltICJNTFRP
Tl9wYXNzd2RfdWlkIjogcGFzc3dkIC0+IHVpZDsKCQkgIHZhbCBnaWQgPSBfcHJpbSAiTUxUT05f
cGFzc3dkX2dpZCI6IHBhc3N3ZCAtPiBnaWQ7CgkJICB2YWwgZGlyID0gX3ByaW0gIk1MVE9OX3Bh
c3N3ZF9kaXIiOiBwYXNzd2QgLT4gY3N0cmluZzsKCQkgIHZhbCBzaGVsbCA9IF9wcmltICJNTFRP
Tl9wYXNzd2Rfc2hlbGwiOiBwYXNzd2QgLT4gY3N0cmluZzsKCSAgICAgICBlbmQKCgkgICAgdmFs
IGdldHB3bmFtID0gX3ByaW0gIk1MVE9OX2dldHB3bmFtIjogbnVsbFN0cmluZyAtPiBQYXNzd2Qu
cGFzc3dkOwoJICAgIHZhbCBnZXRwd3VpZCA9IF9wcmltICJNTFRPTl9nZXRwd3VpZCI6IHVpZCAt
PiBQYXNzd2QucGFzc3dkOwoKCSAgICBzdHJ1Y3R1cmUgR3JvdXAgPQoJICAgICAgIHN0cnVjdAoJ
CSAgdHlwZSBncm91cCA9IHBvaW50ZXIKCgkJICB2YWwgaXNOdWxsID0gX3ByaW0gIk1MVE9OX2lz
TnVsbCI6IGdyb3VwIC0+IGJvb2w7CgkJICB2YWwgbmFtZSA9IF9wcmltICJNTFRPTl9ncm91cF9u
YW1lIjogZ3JvdXAgLT4gY3N0cmluZzsKCQkgIHZhbCBnaWQgPSBfcHJpbSAiTUxUT05fZ3JvdXBf
Z2lkIjogZ3JvdXAgLT4gZ2lkOwoJCSAgdmFsIG1lbSA9IF9wcmltICJNTFRPTl9ncm91cF9tZW0i
OiBncm91cCAtPiBDLkNTUy5jc3M7CgkgICAgICAgZW5kCgoJICAgIHZhbCBnZXRncmdpZCA9IF9w
cmltICJNTFRPTl9nZXRncmdpZCI6IGdpZCAtPiBHcm91cC5ncm91cDsKCSAgICB2YWwgZ2V0Z3Ju
YW0gPSBfcHJpbSAiTUxUT05fZ2V0Z3JuYW0iOiBudWxsU3RyaW5nIC0+IEdyb3VwLmdyb3VwOwoJ
IGVuZAoKICAgICAgc3RydWN0dXJlIFRUWSA9Cgkgc3RydWN0CgkgICAgdHlwZSBzcGVlZCA9IHdv
cmQKCSAgICB2YWwgYjAgPSBfcHJpbSAiQjAiOiBzcGVlZDsKCSAgICB2YWwgYjExMCA9IF9wcmlt
ICJCMTEwIjogc3BlZWQ7CgkgICAgdmFsIGIxMjAwID0gX3ByaW0gIkIxMjAwIjogc3BlZWQ7Cgkg
ICAgdmFsIGIxMzQgPSBfcHJpbSAiQjEzNCI6IHNwZWVkOwoJICAgIHZhbCBiMTUwID0gX3ByaW0g
IkIxNTAiOiBzcGVlZDsKCSAgICB2YWwgYjE4MDAgPSBfcHJpbSAiQjE4MDAiOiBzcGVlZDsKCSAg
ICB2YWwgYjE5MjAwID0gX3ByaW0gIkIxOTIwMCI6IHNwZWVkOwoJICAgIHZhbCBiMjAwID0gX3By
aW0gIkIyMDAiOiBzcGVlZDsKCSAgICB2YWwgYjI0MDAgPSBfcHJpbSAiQjI0MDAiOiBzcGVlZDsK
CSAgICB2YWwgYjMwMCA9IF9wcmltICJCMzAwIjogc3BlZWQ7CgkgICAgdmFsIGIzODQwMCA9IF9w
cmltICJCMzg0MDAiOiBzcGVlZDsKCSAgICB2YWwgYjQ4MDAgPSBfcHJpbSAiQjQ4MDAiOiBzcGVl
ZDsKCSAgICB2YWwgYjUwID0gX3ByaW0gIkI1MCI6IHNwZWVkOwoJICAgIHZhbCBiNjAwID0gX3By
aW0gIkI2MDAiOiBzcGVlZDsKCSAgICB2YWwgYjc1ID0gX3ByaW0gIkI3NSI6IHNwZWVkOwoJICAg
IHZhbCBiOTYwMCA9IF9wcmltICJCOTYwMCI6IHNwZWVkOwoJICAgICAgIAoJICAgIHR5cGUgcGlk
ID0gcGlkCgkgICAgZGF0YXR5cGUgZmlsZV9kZXNjID0gZGF0YXR5cGUgZmlsZV9kZXNjCgoJICAg
IHN0cnVjdHVyZSBWID0KCSAgICAgICBzdHJ1Y3QKCQkgIHZhbCBlb2YgPSBfcHJpbSAiVkVPRiI6
IGludDsKCQkgIHZhbCBlb2wgPSBfcHJpbSAiVkVPTCI6IGludDsKCQkgIHZhbCBlcmFzZSA9IF9w
cmltICJWRVJBU0UiOiBpbnQ7CgkJICB2YWwgaW50ciA9IF9wcmltICJWSU5UUiI6IGludDsKCQkg
IHZhbCBraWxsID0gX3ByaW0gIlZLSUxMIjogaW50OwoJCSAgdmFsIG1pbiA9IF9wcmltICJWTUlO
IjogaW50OwoJCSAgdmFsIG5jY3MgPSBfcHJpbSAiTkNDUyI6IGludDsKCQkgIHZhbCBxdWl0ID0g
X3ByaW0gIlZRVUlUIjogaW50OwoJCSAgdmFsIHN0YXJ0ID0gX3ByaW0gIlZTVEFSVCI6IGludDsK
CQkgIHZhbCBzdG9wID0gX3ByaW0gIlZTVE9QIjogaW50OwoJCSAgdmFsIHN1c3AgPSBfcHJpbSAi
VlNVU1AiOiBpbnQ7CgkJICB2YWwgdGltZSA9IF9wcmltICJWVElNRSI6IGludDsKCSAgICAgICBl
bmQKCgkgICAgc3RydWN0dXJlIEkgPQoJICAgICAgIHN0cnVjdAoJCSAgdHlwZSBmbGFncyA9IHdv
cmQKCQkgIHZhbCBicmtpbnQgPSBfcHJpbSAiQlJLSU5UIjogZmxhZ3M7CgkJICB2YWwgaWNybmwg
PSBfcHJpbSAiSUNSTkwiOiBmbGFnczsKCQkgIHZhbCBpZ25icmsgPSBfcHJpbSAiSUdOQlJLIjog
ZmxhZ3M7CgkJICB2YWwgaWduY3IgPSBfcHJpbSAiSUdOQ1IiOiBmbGFnczsKCQkgIHZhbCBpZ25w
YXIgPSBfcHJpbSAiSUdOUEFSIjogZmxhZ3M7CgkJICB2YWwgaW5sY3IgPSBfcHJpbSAiSU5MQ1Ii
OiBmbGFnczsKCQkgIHZhbCBpbnBjayA9IF9wcmltICJJTlBDSyI6IGZsYWdzOwoJCSAgdmFsIGlz
dHJpcCA9IF9wcmltICJJU1RSSVAiOiBmbGFnczsKCQkgIHZhbCBpeG9mZiA9IF9wcmltICJJWE9G
RiI6IGZsYWdzOwoJCSAgdmFsIGl4b24gPSBfcHJpbSAiSVhPTiI6IGZsYWdzOwoJCSAgdmFsIHBh
cm1yayA9IF9wcmltICJQQVJNUksiOiBmbGFnczsKCSAgICAgICBlbmQKCgkgICAgc3RydWN0dXJl
IE8gPQoJICAgICAgIHN0cnVjdAoJCSAgdHlwZSBmbGFncyA9IHdvcmQKCQkgIHZhbCBvcG9zdCA9
IF9wcmltICJPUE9TVCI6IGZsYWdzOwoJICAgICAgIGVuZAoKCSAgICBzdHJ1Y3R1cmUgQyA9Cgkg
ICAgICAgc3RydWN0CgkJICB0eXBlIGZsYWdzID0gd29yZAoJCSAgdmFsIGNsb2NhbCA9IF9wcmlt
ICJDTE9DQUwiOiBmbGFnczsKCQkgIHZhbCBjcmVhZCA9IF9wcmltICJDUkVBRCI6IGZsYWdzOwoJ
CSAgdmFsIGNzNSA9IF9wcmltICJDUzUiOiBmbGFnczsKCQkgIHZhbCBjczYgPSBfcHJpbSAiQ1M2
IjogZmxhZ3M7CgkJICB2YWwgY3M3ID0gX3ByaW0gIkNTNyI6IGZsYWdzOwoJCSAgdmFsIGNzOCA9
IF9wcmltICJDUzgiOiBmbGFnczsKCQkgIHZhbCBjc2l6ZSA9IF9wcmltICJDU0laRSI6IGZsYWdz
OwoJCSAgdmFsIGNzdG9wYiA9IF9wcmltICJDU1RPUEIiOiBmbGFnczsKCQkgIHZhbCBodXBjbCA9
IF9wcmltICJIVVBDTCI6IGZsYWdzOwoJCSAgdmFsIHBhcmVuYiA9IF9wcmltICJQQVJFTkIiOiBm
bGFnczsKCQkgIHZhbCBwYXJvZGQgPSBfcHJpbSAiUEFST0REIjogZmxhZ3M7CgkgICAgICAgZW5k
CgoJICAgIHN0cnVjdHVyZSBMID0KCSAgICAgICBzdHJ1Y3QKCQkgIHR5cGUgZmxhZ3MgPSB3b3Jk
CgkJICB2YWwgZWNobyA9IF9wcmltICJFQ0hPIjogZmxhZ3M7CgkJICB2YWwgZWNob2UgPSBfcHJp
bSAiRUNIT0UiOiBmbGFnczsKCQkgIHZhbCBlY2hvayA9IF9wcmltICJFQ0hPSyI6IGZsYWdzOwoJ
CSAgdmFsIGVjaG9ubCA9IF9wcmltICJFQ0hPTkwiOiBmbGFnczsKCQkgIHZhbCBpY2Fub24gPSBf
cHJpbSAiSUNBTk9OIjogZmxhZ3M7CgkJICB2YWwgaWV4dGVuID0gX3ByaW0gIklFWFRFTiI6IGZs
YWdzOwoJCSAgdmFsIGlzaWcgPSBfcHJpbSAiSVNJRyI6IGZsYWdzOwoJCSAgdmFsIG5vZmxzaCA9
IF9wcmltICJOT0ZMU0giOiBmbGFnczsKCQkgIHZhbCB0b3N0b3AgPSBfcHJpbSAiVE9TVE9QIjog
ZmxhZ3M7CgkgICAgICAgZW5kCgoJICAgIHN0cnVjdHVyZSBUQyA9CgkgICAgICAgc3RydWN0CgkJ
ICB0eXBlIHNldF9hY3Rpb24gPSBpbnQKCgkJICB2YWwgc2FkcmFpbiA9IF9wcmltICJUQ1NBRFJB
SU4iOiBzZXRfYWN0aW9uOwoJCSAgdmFsIHNhZmx1c2ggPSBfcHJpbSAiVENTQUZMVVNIIjogc2V0
X2FjdGlvbjsKCQkgIHZhbCBzYW5vdyA9IF9wcmltICJUQ1NBTk9XIjogc2V0X2FjdGlvbjsKCgkJ
ICB0eXBlIGZsb3dfYWN0aW9uID0gaW50CgoJCSAgdmFsIGlvbiA9IF9wcmltICJUQ0lPTiI6IGZs
b3dfYWN0aW9uOwoJCSAgdmFsIGlvZmYgPSBfcHJpbSAiVENJT0ZGIjogZmxvd19hY3Rpb247CgkJ
ICB2YWwgb29mZiA9IF9wcmltICJUQ09PRkYiOiBmbG93X2FjdGlvbjsKCQkgIHZhbCBvb24gPSBf
cHJpbSAiVENPT04iOiBmbG93X2FjdGlvbjsKCgkJICB0eXBlIHF1ZXVlX3NlbCA9IGludAoKCQkg
IHZhbCBpZmx1c2ggPSBfcHJpbSAiVENJRkxVU0giOiBxdWV1ZV9zZWw7CgkJICB2YWwgaW9mbHVz
aCA9IF9wcmltICJUQ0lPRkxVU0giOiBxdWV1ZV9zZWw7CgkJICB2YWwgb2ZsdXNoID0gX3ByaW0g
IlRDT0ZMVVNIIjogcXVldWVfc2VsOwoJICAgICAgIGVuZAkJICAKCgkgICAgc3RydWN0dXJlIFRl
cm1pb3MgPQoJICAgICAgIHN0cnVjdAoJCSAgdHlwZSB0ID0gcG9pbnRlcgoJCSAgdHlwZSBmbGFn
ID0gd29yZAoKCQkgIHZhbCBidWZmZXIgPSBfcHJpbSAiKHVpbnQpJk1MVE9OX3Rlcm1pb3MiOiB0
OwoJCSAgdmFsIGlmbGFnID0gX3ByaW0gIk1MVE9OX3Rlcm1pb3NfaWZsYWciOiB0IC0+IGZsYWc7
CgkJICB2YWwgb2ZsYWcgPSBfcHJpbSAiTUxUT05fdGVybWlvc19vZmxhZyI6IHQgLT4gZmxhZzsK
CQkgIHZhbCBjZmxhZyA9IF9wcmltICJNTFRPTl90ZXJtaW9zX2NmbGFnIjogdCAtPiBmbGFnOwoJ
CSAgdmFsIGxmbGFnID0gX3ByaW0gIk1MVE9OX3Rlcm1pb3NfbGZsYWciOiB0IC0+IGZsYWc7CgkJ
ICB2YWwgY2MgPSBfcHJpbSAiTUxUT05fdGVybWlvc19jYyI6IHQgLT4gUHJpbWl0aXZlLkMuQ1Mu
Y3M7CgkJICB2YWwgb3NwZWVkID0KCQkgICAgIF9wcmltICJNTFRPTl9jZmdldG9zcGVlZCI6IHQg
LT4gc3BlZWQ7CgkJICB2YWwgaXNwZWVkID0KCQkgICAgIF9wcmltICJNTFRPTl9jZmdldGlzcGVl
ZCI6IHQgLT4gc3BlZWQ7CgoJCSAgdmFsIHNldGlmbGFnID0KCQkgICAgIF9wcmltICJNTFRPTl9z
ZXRfdGVybWlvc19pZmxhZyI6IHQgKiBmbGFnIC0+IHVuaXQ7CgkJICB2YWwgc2V0b2ZsYWcgPQoJ
CSAgICAgX3ByaW0gIk1MVE9OX3NldF90ZXJtaW9zX29mbGFnIjogdCAqIGZsYWcgLT4gdW5pdDsK
CQkgIHZhbCBzZXRjZmxhZyA9CgkJICAgICBfcHJpbSAiTUxUT05fc2V0X3Rlcm1pb3NfY2ZsYWci
OiB0ICogZmxhZyAtPiB1bml0OwoJCSAgdmFsIHNldGxmbGFnID0KCQkgICAgIF9wcmltICJNTFRP
Tl9zZXRfdGVybWlvc19sZmxhZyI6IHQgKiBmbGFnIC0+IHVuaXQ7CgkJICB2YWwgc2V0b3NwZWVk
ID0KCQkgICAgIF9wcmltICJNTFRPTl9jZnNldG9zcGVlZCI6IHQgKiBzcGVlZCAtPiBpbnQ7CgkJ
ICB2YWwgc2V0aXNwZWVkID0KCQkgICAgIF9wcmltICJNTFRPTl9jZnNldGlzcGVlZCI6IHQgKiBz
cGVlZCAtPiBpbnQ7CgkgICAgICAgZW5kCgoJICAgIHZhbCBnZXRhdHRyID0KCSAgICAgICBfcHJp
bSAiTUxUT05fdGNnZXRhdHRyIjogZmQgKiBUZXJtaW9zLnQgLT4gaW50OwoJICAgIHZhbCBzZXRh
dHRyID0KCSAgICAgICBfcHJpbSAiTUxUT05fdGNzZXRhdHRyIgoJICAgICAgIDogZmQgKiBUQy5z
ZXRfYWN0aW9uICogVGVybWlvcy50IC0+IGludDsKCSAgICB2YWwgc2VuZGJyZWFrID0gX3ByaW0g
InRjc2VuZGJyZWFrIjogZmQgKiBpbnQgLT4gaW50OwoJICAgIHZhbCBkcmFpbiA9IF9wcmltICJ0
Y2RyYWluIjogZmQgLT4gaW50OwoJICAgIHZhbCBmbHVzaCA9IF9wcmltICJ0Y2ZsdXNoIjogZmQg
KiBUQy5xdWV1ZV9zZWwgLT4gaW50OwoJICAgIHZhbCBmbG93ID0gX3ByaW0gInRjZmxvdyI6IGZk
ICogVEMuZmxvd19hY3Rpb24gLT4gaW50OwoKCSAgICB2YWwgZ2V0cGdycCA9IF9wcmltICJ0Y2dl
dHBncnAiOiBmZCAtPiBwaWQ7CgkgICAgdmFsIHNldHBncnAgPSBfcHJpbSAidGNzZXRwZ3JwIjog
ZmQgKiBwaWQgLT4gaW50OwoJIGVuZAogICBlbmQK

--------------CBA93EB96730D9F52627BE47
Content-Type: application/x-unknown-content-type-sml_auto_file;
 name="text-io.sml"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="text-io.sml"

KCogQ29weXJpZ2h0IChDKSAxOTk3LTE5OTkgTkVDIFJlc2VhcmNoIEluc3RpdHV0ZS4KICogUGxl
YXNlIHNlZSB0aGUgZmlsZSBMSUNFTlNFIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKikKc3Ry
dWN0dXJlIFRleHRJTzogVEVYVF9JT19FWFRSQSA9CiAgIHN0cnVjdAogICAgICBzdHJ1Y3R1cmUg
U3RyaW5nID0KCSBzdHJ1Y3QKCSAgICBvcGVuIFByaW1pdGl2ZS5TdHJpbmcKCSAgICBvcGVuIFN0
cmluZwoJIGVuZAogICAgICBzdHJ1Y3R1cmUgRlMgPSBQb3NpeC5GaWxlU3lzCiAgICAgIHN0cnVj
dHVyZSBQSU8gPSBQb3NpeC5JTwoJIAogICAgICBzdHJ1Y3R1cmUgQXJyYXkgPSBXb3JkOEFycmF5
CiAgICAgIHN0cnVjdHVyZSBWZWN0b3IgPSBXb3JkOFZlY3RvcgoJIAogICAgICB0eXBlIHZlY3Rv
ciA9IHN0cmluZyAoKlZlY3Rvci52ZWN0b3IqKQogICAgICB0eXBlIGVsZW0gPSBjaGFyICgqVmVj
dG9yLmVsZW0qKQoKICAgICAgdmFsIGJ1ZlNpemUgPSA0MDk2CgogICAgICAoKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopCiAgICAgICgqICAgICAg
ICAgICAgICAgICAgICAgb3V0c3RyZWFtICAgICAgICAgICAgICAgICAgICAgKikKICAgICAgKCot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKQoKICAg
ICAgZGF0YXR5cGUgYnVmID0KCSBCdWYgb2Yge3NpemU6IGludCByZWYsCgkJIGFycmF5OiBBcnJh
eS5hcnJheX0KCiAgICAgIGZ1biBpc0Z1bGwoQnVme3NpemUsIC4uLn0pID0gIXNpemUgPSBidWZT
aXplCgogICAgICAoKiB3cml0ZSBvdXQgdG8gZmQgc2l6ZSBieXRlcyBvZiBidWYgc3RhcnRpbmcg
YXQgaW5kZXggaSAqKQogICAgICBmdW4gZmx1c2hHZW4oZmQ6IEZTLmZpbGVfZGVzYywKCQkgICBi
dWY6ICdhLAoJCSAgIGk6IGludCwKCQkgICBzaXplOiBpbnQsCgkJICAgd3JpdGU6IEZTLmZpbGVf
ZGVzYyAqIHtidWY6ICdhLAoJCQkJCSAgIGk6IGludCwKCQkJCQkgICBzejogaW50IG9wdGlvbn0g
LT4gaW50KTogdW5pdCA9CgkgbGV0CgkgICAgdmFsIG1heCA9IGkgKyBzaXplCgkgICAgZnVuIGxv
b3AgaSA9CgkgICAgICAgaWYgaSA9IG1heAoJCSAgdGhlbiAoKQoJICAgICAgIGVsc2UKCQkgIGxv
b3AoaSArIHdyaXRlKGZkLCB7YnVmID0gYnVmLAoJCQkJICAgICAgaSA9IGksCgkJCQkgICAgICBz
eiA9IFNPTUUobWF4IC0gaSl9KSkKCSBpbiBsb29wIGkKCSBlbmQKCiAgICAgIGZ1biBmbHVzaChm
ZCwgQnVme3NpemUsIGFycmF5fSkgPQoJIChmbHVzaEdlbihmZCwgYXJyYXksIDAsICFzaXplLCBQ
SU8ud3JpdGVBcnIpCgkgIDsgc2l6ZSA6PSAwKQoJIAogICAgICBkYXRhdHlwZSBidWZTdHlsZSA9
CgkgVW5idWZmZXJlZAogICAgICAgfCBMaW5lIG9mIGJ1ZgogICAgICAgfCBCdWZmZXJlZCBvZiBi
dWYKCSAKICAgICAgZGF0YXR5cGUgb3V0c3RyZWFtJyA9CgkgT3V0IG9mIHtmZDogRlMuZmlsZV9k
ZXNjLAoJCSBjbG9zZWQ6IGJvb2wgcmVmLAoJCSBidWZTdHlsZTogYnVmU3R5bGV9CiAgICAgIHR5
cGUgb3V0c3RyZWFtID0gb3V0c3RyZWFtJyByZWYKCiAgICAgIHZhbCBta091dHN0cmVhbSA9IHJl
ZgogICAgICB2YWwgZ2V0T3V0c3RyZWFtID0gIQogICAgICB2YWwgc2V0T3V0c3RyZWFtID0gb3Ag
Oj0KCSAKICAgICAgZnVuIGZsdXNoT3V0KHJlZihPdXR7ZmQsIGJ1ZlN0eWxlLCBjbG9zZWQsIC4u
Ln0pKTogdW5pdCA9CgkgKGNhc2UgKCFjbG9zZWQsIGJ1ZlN0eWxlKSBvZgoJICAgICAodHJ1ZSwg
XykgPT4gKCkKCSAgIHwgKF8sICAgIFVuYnVmZmVyZWQpID0+ICgpCgkgICB8IChfLCAgICBMaW5l
IGIpID0+IGZsdXNoKGZkLCBiKQoJICAgfCAoXywgICAgQnVmZmVyZWQgYikgPT4gZmx1c2goZmQs
IGIpKQoJIGhhbmRsZSBleG4gPT4gcmFpc2UgSU8uSW97bmFtZSA9ICI8dW5pbXBsZW1lbnRlZD4i
LAoJCQkJICAgZnVuY3Rpb24gPSAiZmx1c2hPdXQiLAoJCQkJICAgY2F1c2UgPSBleG59CgogICAg
ICB2YWwgb3Blbk91dHM6IG91dHN0cmVhbSBsaXN0IHJlZiA9IHJlZiBbXQoKICAgICAgZnVuIGNs
b3NlT3V0KG91dCBhcyByZWYoT3V0e2ZkLCBjbG9zZWQsIC4uLn0pKTogdW5pdCA9CgkgaWYgIWNs
b3NlZCB0aGVuICgpCgkgZWxzZSAoZmx1c2hPdXQgb3V0OwoJICAgICAgIGNsb3NlZCA6PSB0cnVl
OwoJICAgICAgIFBJTy5jbG9zZSBmZDsKCSAgICAgICBvcGVuT3V0cyA6PSBMaXN0LmZpbHRlciAo
Zm4gb3V0JyA9PiBub3Qob3V0ID0gb3V0JykpICghb3Blbk91dHMpKQoKICAgICAgdmFsIG5ld091
dCA9CgkgKCgqIFRoZXNlIHNpZGUtZWZmZWN0IGlzIGhlcmUgc28gdGhhdCB0aGUgZGVhZCBjb2Rl
IGVsaW1pbmF0aW9uIHdvbid0CgkgICAqIGdldCByaWQgb2YgaXQgYXMgbG9uZyBhcyBuZXdPdXQg
aXMgdXNlZAoJICAgKikKCSAgQXRTYXZlV29ybGQuYWRkTmV3Q2xlYW5lcihmbiAoKSA9PiBMaXN0
LmFwcCBmbHVzaE91dCAoIW9wZW5PdXRzKSk7CgkgIEF0RXhpdC5hZGROZXdDbGVhbmVyCgkgIChm
biAoKSA9PgoJICAgTGlzdC5hcHAKCSAgIChmbiBvdXQgYXMgcmVmKE91dHtmZCwuLi59KSA9PgoJ
ICAgIChmbHVzaE91dCBvdXQ7CgkgICAgIGlmIGZkID0gRlMuc3Rkb3V0IG9yZWxzZSBmZCA9IEZT
LnN0ZGVycgoJCXRoZW4gKCkKCSAgICAgZWxzZSBjbG9zZU91dCBvdXQpKQoJICAgKCFvcGVuT3V0
cykpOwoJICAoKiBlbmQgc3R1cGlkaXR5ICopCgkgIGZuIGZkID0+CgkgIGxldAoJICAgICB2YWwg
YnVmU3R5bGUgPQoJCWlmIGZkID0gRlMuc3RkZXJyCgkJICAgdGhlbiBVbmJ1ZmZlcmVkCgkJZWxz
ZSAoaWYgUG9zaXguUHJvY0Vudi5pc2F0dHkgZmQgdGhlbiBMaW5lIGVsc2UgQnVmZmVyZWQpCgkJ
ICAgKEJ1ZntzaXplID0gcmVmIDAsCgkJCWFycmF5ID0gQXJyYXkuYXJyYXkoYnVmU2l6ZSwgMHcw
KX0pCgkgICAgIHZhbCBvdXQgPSByZWYoT3V0e2ZkID0gZmQsCgkJCSAgICAgICBjbG9zZWQgPSBy
ZWYgZmFsc2UsCgkJCSAgICAgICBidWZTdHlsZSA9IGJ1ZlN0eWxlfSkKCSAgaW4gb3Blbk91dHMg
Oj0gb3V0IDo6ICFvcGVuT3V0czsKCSAgICAgb3V0CgkgIGVuZCkKCiAgICAgIHZhbCBzdGRPdXQg
PSBuZXdPdXQgRlMuc3Rkb3V0CiAgICAgIHZhbCBzdGRFcnIgPSBuZXdPdXQgRlMuc3RkZXJyCgog
ICAgICBsb2NhbAoJIHZhbCByZWFkV3JpdGUgPQoJICAgIGxldCBvcGVuIEZTLlMKCSAgICBpbiBm
bGFnc1tpcnVzciwgaXd1c3IsIGlyZ3JwLCBpd2dycCwgaXJvdGgsIGl3b3RoXQoJICAgIGVuZAog
ICAgICBpbgoJIGZ1biBvcGVuT3V0IHBhdGggPQoJICAgIChuZXdPdXQoRlMuY3JlYXQocGF0aCwg
cmVhZFdyaXRlKSkpCgkgICAgaGFuZGxlIGV4biA9PiByYWlzZSBJTy5Jb3tuYW1lID0gIjx1bmlt
cGxlbWVudGVkPiIsCgkJCQkgICAgICBmdW5jdGlvbiA9ICJvcGVuT3V0IiwKCQkJCSAgICAgIGNh
dXNlID0gZXhufQoJICAgICAgIAoJIGZ1biBvcGVuQXBwZW5kIHBhdGggPQoJICAgIChuZXdPdXQo
RlMuY3JlYXRlZihwYXRoLCBGUy5PX1dST05MWSwgRlMuTy5mbGFnc1tGUy5PLmFwcGVuZCwgRlMu
Ty50ZXh0XSwgcmVhZFdyaXRlKSkpCgkgICAgaGFuZGxlIGV4biA9PiByYWlzZSBJTy5Jb3tuYW1l
ID0gIjx1bmltcGxlbWVudGVkPiIsCgkJCQkgICAgICBmdW5jdGlvbiA9ICJvcGVuQXBwZW5kIiwK
CQkJCSAgICAgIGNhdXNlID0gZXhufQogICAgICBlbmQKICAgICAgCiAgICAgIGZ1biBvdXRwdXQo
b3V0IGFzIHJlZihPdXR7ZmQsIGNsb3NlZCwgYnVmU3R5bGUsIC4uLn0pLCBzOiBzdHJpbmcpOiB1
bml0ID0KCSBsZXQgdmFsIHYgPSBTdHJpbmcudG9Xb3JkOFZlY3RvciBzCgkgaW4gaWYgIWNsb3Nl
ZAoJICAgICAgIHRoZW4gcmFpc2UgSU8uSW97bmFtZSA9ICI8dW5pbXBsZW1lbnRlZD4iLAoJCQkJ
ZnVuY3Rpb24gPSAib3V0cHV0MSIsCgkJCQljYXVzZSA9IElPLkNsb3NlZFN0cmVhbX0KCSAgICBl
bHNlCgkgICAgICAgbGV0CgkJICB2YWwgdmVjU2l6ZSA9IFZlY3Rvci5sZW5ndGggdgoJCSAgZnVu
IHN0b3JlKGIgYXMgQnVme3NpemUsIGFycmF5fSkgPQoJCSAgICAgbGV0CgkJCXZhbCBjdXJTaXpl
ID0gIXNpemUKCQkJdmFsIG5ld1NpemUgPSB2ZWNTaXplICsgY3VyU2l6ZQoJCSAgICAgaW4KCQkJ
aWYgbmV3U2l6ZSA+IGJ1ZlNpemUKCQkJICAgdGhlbgoJCQkgICAgICBsZXQKCQkJCSAoKiBmbHVz
aCB0aGUgY3VycmVudCBidWZmZXIgKyBhIHByZWZpeCBvZiB0aGUKCQkJCSAgKiB2ZWN0b3IsIGlm
IHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBlbXB0eQoJCQkJICAqKQoJCQkJIHZhbCB2ZWNpID0KCQkJ
CSAgICBpZiBjdXJTaXplID0gMAoJCQkJICAgICAgIHRoZW4gMAoJCQkJICAgIGVsc2UKCQkJCSAg
ICAgICBsZXQgdmFsIGZpbGwgPSBidWZTaXplIC0gY3VyU2l6ZQoJCQkJICAgICAgIGluIEFycmF5
LmNvcHlWZWN7c3JjID0gdiwKCQkJCQkJCXNpID0gMCwKCQkJCQkJCWxlbiA9IFNPTUUgZmlsbCwK
CQkJCQkJCWRzdCA9IGFycmF5LAoJCQkJCQkJZGkgPSBjdXJTaXplfSA7CgkJCQkJICBzaXplIDo9
IGJ1ZlNpemUgOwoJCQkJCSAgZmx1c2goZmQsIGIpIDsKCQkJCQkgIGZpbGwKCQkJCSAgICAgICBl
bmQKCQkJCSAoKiBmbHVzaCBvdXQgYXMgbXVjaCBvZiB0aGUgdmVjdG9yIGFzIG5lZWRlZAoJCQkJ
ICAqIHNvIHRoYXQgPD0gYnVmU2l6ZSByZW1haW5zCgkJCQkgICopCgkJCQkgZnVuIGxvb3AgaSA9
CgkJCQkgICAgbGV0IHZhbCByZW1haW5pbmcgPSB2ZWNTaXplIC0gaQoJCQkJICAgIGluIGlmIHJl
bWFpbmluZyA8PSBidWZTaXplCgkJCQkJICB0aGVuCgkJCQkJICAgICAoQXJyYXkuY29weVZlY3tz
cmMgPSB2LAoJCQkJCQkJICAgIHNpID0gaSwKCQkJCQkJCSAgICBsZW4gPSBTT01FIHJlbWFpbmlu
ZywKCQkJCQkJCSAgICBkc3QgPSBhcnJheSwKCQkJCQkJCSAgICBkaSA9IDB9IDsKCQkJCQkgICAg
ICBzaXplIDo9IHJlbWFpbmluZykKCQkJCSAgICAgICBlbHNlCgkJCQkJICAoZmx1c2hHZW4oZmQs
IHYsIGksIGJ1ZlNpemUsIFBJTy53cml0ZVZlYyk7CgkJCQkJICAgbG9vcChpICsgYnVmU2l6ZSkp
CgkJCQkgICAgZW5kCgkJCSAgICAgIGluIGxvb3AgdmVjaQoJCQkgICAgICBlbmQKCQkJZWxzZSAo
QXJyYXkuY29weVZlY3tzcmMgPSB2LCBzaSA9IDAsIGxlbiA9IE5PTkUsCgkJCQkJICAgIGRzdCA9
IGFycmF5LCBkaSA9IGN1clNpemV9IDsKCQkJICAgICAgc2l6ZSA6PSBuZXdTaXplKQoJCSAgICAg
ZW5kCgkgICAgICAgaW4gY2FzZSBidWZTdHlsZSBvZgoJCSAgVW5idWZmZXJlZCA9PiBmbHVzaEdl
bihmZCwgdiwgMCwgdmVjU2l6ZSwgUElPLndyaXRlVmVjKQoJCXwgTGluZSBiID0+IChzdG9yZSBi
IDsgaWYgQ2hhci5jb250YWlucyBzICMiXG4iCgkJCQkJICB0aGVuIGZsdXNoKGZkLCBiKQoJCQkJ
ICAgICAgIGVsc2UgKCkpCgkJfCBCdWZmZXJlZCBiID0+IHN0b3JlIGIKCSAgICAgICBlbmQgaGFu
ZGxlIGV4biA9PiByYWlzZSBJTy5Jb3tuYW1lID0gIjx1bmltcGxlbWVudGVkPiIsCgkJCQkJICAg
ICBmdW5jdGlvbiA9ICJvdXRwdXQxIiwKCQkJCQkgICAgIGNhdXNlID0gZXhufQoJIGVuZAogICAg
ICAKICAgICAgZnVuIG91dHB1dDEob3V0LCBjOiBlbGVtKTogdW5pdCA9IG91dHB1dChvdXQsIHN0
ciBjKQoKICAgICAgZnVuIG91dHB1dFN1YnN0cihvdXQsIHNzKTogdW5pdCA9IG91dHB1dChvdXQs
IFN1YnN0cmluZy5zdHJpbmcgc3MpCgkgCiAgICAgIGZ1biBwcmludChzOiBzdHJpbmcpID0gKG91
dHB1dCAoc3RkT3V0LCBzKTsgZmx1c2hPdXQgc3RkT3V0KQoJICAgIAogICAgICAoKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopCiAgICAgICgqICAg
ICAgICAgICAgICAgICAgICAgaW5zdHJlYW0gICAgICAgICAgICAgICAgICAgICAgKikKICAgICAg
KCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKQoK
ICAgICAgZGF0YXR5cGUgaW5zdHJlYW0gPQoJIEluIG9mIHtmZDogRlMuZmlsZV9kZXNjLAoJCWNs
b3NlZDogYm9vbCByZWYsCgkJZW9mOiBib29sIHJlZiwKCQlmaXJzdDogaW50IHJlZiwgKCogaW5k
ZXggb2YgZmlyc3QgY2hhcmFjdGVyICopCgkJbGFzdDogaW50IHJlZiwgICgqIG9uZSBwYXN0IHRo
ZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyICopCgkJYnVmOiBBcnJheS5hcnJheX0KCiAgICAgIGZ1
biBuZXdJbiBmZCA9IElue2ZkID0gZmQsCgkJCWVvZiA9IHJlZiBmYWxzZSwKCQkJY2xvc2VkID0g
cmVmIGZhbHNlLAoJCQlmaXJzdCA9IHJlZiAwLAoJCQlsYXN0ID0gcmVmIDAsCgkJCWJ1ZiA9IEFy
cmF5LmFycmF5KGJ1ZlNpemUsIDB3MCl9CgogICAgICBmdW4gb3BlbkluIHBhdGggPQoJIG5ld0lu
KEZTLm9wZW5mKHBhdGgsIEZTLk9fUkRPTkxZLCBGUy5PLmZsYWdzW0ZTLk8udGV4dF0pKQoJIGhh
bmRsZSBleG4gPT4gcmFpc2UgSU8uSW97bmFtZSA9ICI8dW5pbXBsZW1lbnRlZD4iLAoJCQkJICAg
ZnVuY3Rpb24gPSAib3BlbkluIiwKCQkJCSAgIGNhdXNlID0gZXhufQoKICAgICAgdmFsIHN0ZElu
ID0gbmV3SW4gRlMuc3RkaW4KCiAgICAgIGZ1biB1cGRhdGVJbihJbntmZCwgY2xvc2VkLCBlb2Ys
IGZpcnN0LCBsYXN0LCBidWYsIC4uLn0pOiB1bml0ID0KCSBpZiAhY2xvc2VkCgkgICAgdGhlbiBy
YWlzZSBJTy5Jb3tuYW1lID0gIjx1bmltcGxlbWVudGVkPiIsCgkJCSAgICAgZnVuY3Rpb24gPSAi
PHVua25vd24+IiwKCQkJICAgICBjYXVzZSA9IElPLkNsb3NlZFN0cmVhbX0KCSBlbHNlIGlmICFl
b2YKCQkgdGhlbiAoKQoJICAgICAgZWxzZSAKCQkgaWYgIWZpcnN0ID0gIWxhc3QKCQkgICAgdGhl
biAoKiBuZWVkIHRvIHJlYWQgKikKCQkgICAgICAgbGV0CgkJCSAgdmFsIGJ5dGVzUmVhZCA9CgkJ
CSAgICAgUElPLnJlYWRBcnIoZmQsIHtidWYgPSBidWYsIGkgPSAwLCBzeiA9IE5PTkV9KQoJCSAg
ICAgICBpbiBpZiBieXRlc1JlYWQgPSAwCgkJCSAgICAgdGhlbiBlb2YgOj0gdHJ1ZQoJCQkgIGVs
c2UgKGZpcnN0IDo9IDA7IGxhc3QgOj0gYnl0ZXNSZWFkKQoJCSAgICAgICBlbmQKCQkgZWxzZSAo
KQoKICAgICAgZnVuIGxhc3RDaGFyIHMgPSBTdHJpbmcuc3ViKHMsIFN0cmluZy5zaXplIHMgLSAx
KQoKICAgICAgZnVuIGlucHV0TGluZShpbnMgYXMgSW57ZW9mLCBidWYsIGZpcnN0LCBsYXN0LCAu
Li59KTogc3RyaW5nID0KCSBsZXQKCSAgICBmdW4gbG9vcCBhY2N1bSA9CgkgICAgICAgKHVwZGF0
ZUluIGlucwoJCTsgaWYgIWVvZgoJCSAgICAgdGhlbiAoZW9mIDo9IGZhbHNlOyBhY2N1bSkKCQkg
IGVsc2UgbGV0CgkJCSAgKCogIWZpcnN0IDwgIWxhc3QgKikKCQkJICBmdW4gbG9vcCcgaSA9ICgq
IHByZTogIWZpcnN0IDw9IGkgPD0gIWxhc3QgKikKCQkJICAgICBsZXQKCQkJCWZ1biBkb25lIGog
PSAoKiBwcmU6ICFmaXJzdCA8IGogPD0gIWxhc3QgKikKCQkJCSAgICgoU3RyaW5nLmZyb21Xb3Jk
OFZlY3RvcgoJCQkJICAgICAoQXJyYXkuZXh0cmFjdChidWYsICFmaXJzdCwgU09NRShqIC0gIWZp
cnN0KSkpCgkJCQkgICAgIDo6IGFjY3VtKQoJCQkJICAgIGJlZm9yZQoJCQkJICAgIGZpcnN0IDo9
IGopCgkJCSAgICAgaW4gaWYgaSA9ICFsYXN0CgkJCQkgICB0aGVuIGxvb3AoZG9uZSBpKQoJCQkJ
ZWxzZSAoY2FzZSBCeXRlLmJ5dGVUb0NoYXIoQXJyYXkuc3ViKGJ1ZiwgaSkpIG9mCgkJCQkJICMi
XG4iID0+IGRvbmUoaSArIDEpCgkJCQkgICAgICAgfCBfID0+IGxvb3AnKGkgKyAxKSkKCQkJICAg
ICBlbmQKCQkgICAgICAgaW4gbG9vcCcoISBmaXJzdCkKCQkgICAgICAgZW5kKQoJICAgIHZhbCBh
Y2N1bSA9IGxvb3AgW10KCSBpbgoJICAgIGNhc2UgYWNjdW0gb2YKCSAgICAgICBbXSA9PiAiIgoJ
ICAgICB8IHMgOjogXyA9PiBjb25jYXQocmV2KGNhc2UgbGFzdENoYXIgcyBvZgoJCQkJICAgICAg
ICMiXG4iID0+IGFjY3VtCgkJCQkgICAgIHwgXyA9PiAiXG4iIDo6IGFjY3VtKSkKCSBlbmQKCiAg
ICAgIHZhbCBlbXB0eSA9ICIiCgkgCiAgICAgIGZ1biBpbnB1dChpbnMgYXMgSW57ZW9mLCBidWYs
IGZpcnN0LCBsYXN0LCAuLi59KTogdmVjdG9yID0KCSAodXBkYXRlSW4gaW5zCgkgIDsgaWYgIWVv
ZgoJICAgICAgIHRoZW4gKGVvZiA6PSBmYWxzZTsgZW1wdHkpCgkgICAgZWxzZQoJICAgICAgIChT
dHJpbmcuZnJvbVdvcmQ4VmVjdG9yCgkJKEFycmF5LmV4dHJhY3QoYnVmLCAhZmlyc3QsIFNPTUUo
IWxhc3QgLSAhZmlyc3QpKSkKCQliZWZvcmUgZmlyc3QgOj0gIWxhc3QpKQoJIGhhbmRsZSBleG4g
PT4gcmFpc2UgSU8uSW97bmFtZSA9ICI8dW5pbXBsZW1lbnRlZD4iLAoJCQkJICAgZnVuY3Rpb24g
PSAiaW5wdXQiLAoJCQkJICAgY2F1c2UgPSBleG59CgogICAgICBmdW4gbG9va2FoZWFkKGlucyBh
cyBJbntlb2YsIGJ1ZiwgZmlyc3QsIC4uLn0pOiBlbGVtIG9wdGlvbiA9CgkgKGlmICFlb2YKCSAg
ICAgdGhlbiBOT05FCgkgIGVsc2UgKHVwZGF0ZUluIGlucwoJCTsgaWYgIWVvZgoJCSAgICAgdGhl
biBOT05FCgkJICBlbHNlIFNPTUUoQnl0ZS5ieXRlVG9DaGFyKEFycmF5LnN1YihidWYsICFmaXJz
dCkpKSkpCgkgaGFuZGxlIGV4biA9PiByYWlzZSBJTy5Jb3tuYW1lID0gIjx1bmltcGxlbWVudGVk
PiIsCgkJCQkgICBmdW5jdGlvbiA9ICJsb29rYWhlYWQiLAoJCQkJICAgY2F1c2UgPSBleG59Cgog
ICAgICBmdW4gaW5wdXQxKGlucyBhcyBJbntidWYsIGZpcnN0LCAuLi59KTogZWxlbSBvcHRpb24g
PQoJIChjYXNlIGxvb2thaGVhZCBpbnMgb2YKCSAgICAgTk9ORSA9PiBOT05FCgkgICB8IHJlcyBh
cyBTT01FIF8gPT4gKGZpcnN0IDo9IDEgKyAhZmlyc3Q7CgkJCSAgICAgICByZXMpKQoJIGhhbmRs
ZSBleG4gPT4gcmFpc2UgSU8uSW97bmFtZSA9ICI8dW5pbXBsZW1lbnRlZD4iLAoJCQkJICAgZnVu
Y3Rpb24gPSAiaW5wdXQxIiwKCQkJCSAgIGNhdXNlID0gZXhufQoKICAgICAgZnVuIGlucHV0Tihp
bnMgYXMgSW57ZmQsIGVvZiwgZmlyc3QsIGxhc3QsIGJ1ZiwgLi4ufSwKCQkgYnl0ZXNUb1JlYWQ6
IGludCk6IHZlY3RvciA9CgkgKGlmIEludC5nZXUoYnl0ZXNUb1JlYWQsIEFycmF5Lm1heExlbikK
CSAgICAgdGhlbiByYWlzZSBTaXplCgkgIGVsc2UKCSAgICAgaWYgIWVvZgoJCXRoZW4gKGVvZiA6
PSBmYWxzZTsgZW1wdHkpCgkgICAgIGVsc2UKCQlsZXQgdmFsIHNpemUgPSAhbGFzdCAtICFmaXJz
dAoJCWluIGlmIHNpemUgPj0gYnl0ZXNUb1JlYWQKCQkgICAgICB0aGVuIChTdHJpbmcuZnJvbVdv
cmQ4VmVjdG9yCgkJCSAgICAoQXJyYXkuZXh0cmFjdChidWYsICFmaXJzdCwgU09NRSBieXRlc1Rv
UmVhZCkpCgkJCSAgICBiZWZvcmUgZmlyc3QgOj0gYnl0ZXNUb1JlYWQgKyAhZmlyc3QpCgkJICAg
ZWxzZQoJCSAgICAgIGxldCB2YWwgZHN0ID0gQXJyYXkuYXJyYXkoYnl0ZXNUb1JlYWQsIDB3MCkK
CQkJIHZhbCBfID0KCQkJICAgIChBcnJheS5jb3B5e3NyYyA9IGJ1Ziwgc2kgPSAhZmlyc3QsIGxl
biA9IFNPTUUgc2l6ZSwKCQkJCQlkc3QgPSBkc3QsIGRpID0gMH0gOwoJCQkgICAgIGZpcnN0IDo9
ICFsYXN0KQoJCQkgZnVuIGxvb3AoYnl0ZXNSZWFkOiBpbnQpOiBpbnQgPQoJCQkgICAgaWYgYnl0
ZXNSZWFkID0gYnl0ZXNUb1JlYWQKCQkJICAgICAgIHRoZW4gYnl0ZXNSZWFkCgkJCSAgICBlbHNl
IGxldAoJCQkJICAgIHZhbCBieXRlc1JlYWQnID0KCQkJCSAgICAgICBQSU8ucmVhZEFycgoJCQkJ
ICAgICAgIChmZCwge2J1ZiA9IGRzdCwgaSA9IGJ5dGVzUmVhZCwKCQkJCQkgICAgIHN6ID0gU09N
RShieXRlc1RvUmVhZCAtIGJ5dGVzUmVhZCl9KQoJCQkJIGluIGlmIGJ5dGVzUmVhZCcgPSAwCgkJ
CQkgICAgICAgdGhlbiAoZW9mIDo9IHRydWUgOwoJCQkJCSAgICAgYnl0ZXNSZWFkKQoJCQkJICAg
IGVsc2UgbG9vcChieXRlc1JlYWQgKyBieXRlc1JlYWQnKQoJCQkJIGVuZAoJCQkgdmFsIGJ5dGVz
UmVhZCA9IGxvb3Agc2l6ZQoJCSAgICAgIGluIGlmIGJ5dGVzUmVhZCA9IGJ5dGVzVG9SZWFkCgkJ
CSAgICB0aGVuIFN0cmluZy5mcm9tV29yZDhWZWN0b3IKCQkJICAgICAgICAgKFByaW1pdGl2ZS5W
ZWN0b3IuZnJvbUFycmF5IGRzdCkKCQkJIGVsc2UgKFN0cmluZy5mcm9tV29yZDhWZWN0b3IKCQkJ
ICAgICAgIChBcnJheS5leHRyYWN0KGRzdCwgMCwgU09NRSBieXRlc1JlYWQpKSkKCQkgICAgICBl
bmQKCQllbmQpCgkgICAgIGhhbmRsZSBleG4gPT4gcmFpc2UgSU8uSW97bmFtZSA9ICI8dW5pbXBs
ZW1lbnRlZD4iLAoJCQkJICAgICAgIGZ1bmN0aW9uID0gImlucHV0TiIsCgkJCQkgICAgICAgY2F1
c2UgPSBleG59CgogICAgICBmdW4gaW5wdXRBbGwoaW5zIGFzIElue2ZkLCBlb2YsIGZpcnN0LCBs
YXN0LCBidWYsIC4uLn0pID0KCSBpZiAhZW9mCgkgICAgdGhlbiAoZW9mIDo9IGZhbHNlOyBlbXB0
eSkKCSBlbHNlCgkgICAgKGxldCB2YWwgdnMgPSBbQXJyYXkuZXh0cmFjdChidWYsICFmaXJzdCwg
U09NRSghbGFzdCAtICFmaXJzdCkpXQoJCSBmdW4gbG9vcCB2cyA9CgkJICAgIGxldCB2YWwgdiA9
IFBJTy5yZWFkVmVjKGZkLCBidWZTaXplKQoJCSAgICBpbiBpZiBWZWN0b3IubGVuZ3RoIHYgPSAw
CgkJCSAgdGhlbiBTdHJpbmcuZnJvbVdvcmQ4VmVjdG9yKFZlY3Rvci5jb25jYXQocmV2IHZzKSkK
CQkgICAgICAgZWxzZSBsb29wKHYgOjogdnMpCgkJICAgIGVuZAoJICAgICBpbiBsb29wIHZzCgkg
ICAgIGVuZCkKCSAgICBoYW5kbGUgZXhuID0+IHJhaXNlIElPLklve25hbWUgPSAiPHVuaW1wbGVt
ZW50ZWQ+IiwKCQkJCSAgICAgIGZ1bmN0aW9uID0gImlucHV0TiIsCgkJCQkgICAgICBjYXVzZSA9
IGV4bn0KCiAgICAgICgqIG5vdCBlbnRpcmVseSBjb3JyZWN0IC0gcmVhbGx5IG5lZWRzIHRvIGRv
IG5vbiBibG9ja2luZyBsb29rYWhlYWQgKikKICAgICAgZnVuIGNhbklucHV0KGlucyBhcyBJbntl
b2YsIGZpcnN0LCBsYXN0LCAuLi59LCBuKSA9CgkgKHVwZGF0ZUluIGlucwoJICA7IGlmICFlb2YK
CSAgICAgICB0aGVuIFNPTUUgMAoJICAgIGVsc2UgU09NRShJbnQubWluKG4sICFsYXN0IC0gIWZp
cnN0KSkpCgogICAgICBmdW4gY2xvc2VJbihJbntmZCwgY2xvc2VkLCAuLi59KSA9CgkgKFBJTy5j
bG9zZSBmZDsgY2xvc2VkIDo9IHRydWUpCgkgICAgCiAgICAgIGZ1biBlbmRPZlN0cmVhbShpbnMg
YXMgSW57ZW9mLCAuLi59KSA9CgkgIWVvZiBvcmVsc2UgKHVwZGF0ZUluIGluczsgIWVvZikKCiAg
ICAgICgqIFRoaXMgaXMgYWxsIGp1c3QgYSBoYWNrIHNvIHRoYXQgSSBjYW4gZW11bGF0ZSBzY2Fu
U3RyZWFtICopCiAgICAgIHN0cnVjdHVyZSBTdHJlYW1JTyA9Cgkgc3RydWN0CgkgICAgdHlwZSBv
dXRzdHJlYW0gPSBvdXRzdHJlYW0nCgoJICAgIGRhdGF0eXBlIHN0YXRlID0KCSAgICAgICBVbmV2
YWwgb2YgaW5zdHJlYW0KCSAgICAgfCBFdmFsIG9mIChjaGFyICogbGF6eSkgb3B0aW9uCgkgICAg
d2l0aHR5cGUgbGF6eSA9IHN0YXRlIHJlZgoKCSAgICB0eXBlIGluc3RyZWFtID0gbGF6eQoKCSAg
ICBmdW4gbWFrZSBpbnMgPSByZWYoVW5ldmFsIGlucykKCgkgICAgZnVuIGlucHV0MScgciA9Cgkg
ICAgICAgY2FzZSAhciBvZgoJCSAgRXZhbCB2ID0+IHYKCQl8IFVuZXZhbCBpbnMgPT4gbGV0IHZh
bCB2ID0gKGNhc2UgaW5wdXQxIGlucyBvZgoJCQkJCQlOT05FID0+IE5PTkUKCQkJCQkgICAgICB8
IFNPTUUgYyA9PiBTT01FKGMsIG1ha2UgaW5zKSkKCQkJCWluIHIgOj0gRXZhbCB2OyB2CgkJCQll
bmQKCSAgICB2YWwgaW5wdXQxID0gaW5wdXQxJwoJIGVuZAoKICAgICAgZnVuIHNjYW5TdHJlYW0g
ZiBpbnMgPQoJIGNhc2UgZiBTdHJlYW1JTy5pbnB1dDEgKFN0cmVhbUlPLm1ha2UgaW5zKSBvZgoJ
ICAgIE5PTkUgPT4gTk9ORQoJICB8IFNPTUUodiwgXykgPT4gU09NRSB2CQogICBlbmQKCnN0cnVj
dHVyZSBUZXh0SU9HbG9iYWw6IFRFWFRfSU9fR0xPQkFMID0gVGV4dElPCm9wZW4gVGV4dElPCg==

--------------CBA93EB96730D9F52627BE47--