Subject: Multicast issues
To: None <tech-net@netbsd.org>
From: Phan Nam <metallica2507@yahoo.com>
List: tech-net
Date: 12/26/2007 01:01:13
--0-1361308450-1198659673=:65197
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Content-Id: 
Content-Disposition: inline

Dear tech-net staff

I have some issues which relate to multicast address

I would like to make it clearly. Please correct me if
I have some wrong points. I have three cases to ask
you about OS NetBSD. On my OS NetBSD, I have two
interface: sip0 (index is 1) and lo0 (index is 2). Of
course, the index of anylocal is zero.

    1. Client and server are on the same machine
("case1.tar")
       In this case, I run application on OS NetBSD. I
use interface sip0 as default interface to exchange
data. After server joins multicast address, it will
wait client to send data. But server can not receive
data and the result is failed.
       If I run this application on OS Linux, the
result is passed. Client and server can exchange data
together. Of course, I use interface eth0 as default
interface (if you test, please select correct index on
Linux , maybe index is 2 or 3 or ...).
       But if I set interface's index is zero and run
application on NetBSD. Client and server can exchange
data each other and result is passed. On Linux, result
is also passed
       Please have a look these following coding lines
to set index of interface in file server6.c
              index1 = 1;
                if (setsockopt(sockfd, IPPROTO_IPV6,
IPV6_MULTICAST_IF, (const                    
char*)&index1, sizeof(index1)) < 0){
                    perror("setsockopt");
                exit(1);
                }   

    2. Server is on OS NetBSD, client is on another
machine (Linux or other OS) ("case2.tar)
       In this case, I use two machines (server is
NetBSD, client is Linux). At first time, I choose
interface's index is zero (file server6.c). The result
is failed. At second time, I set interface's index is
1 (sip0), the result is passed.
       But if I use two OS Linux, the result is passed
for both above cases.
       The coding line is the same with case1

    3. Client is on OS NetBSD, server is on another
machine ("case3.tar")
       In this case, I use default interface of system
and server is on OS Linux. I see client can send data,
but server still can not receive that data, so the
result is failed. But If I put client on Linux, client
and server can exchange data and result is passed.

Would you please checking these problems on NetBSD
system? I wonder that "Did I configure incorrectly?".
If these problems  are due to configuration. Please
give me your instructions. Or if I misunderstand,
please correct me.

Here are information on my system
    OS NetBSD: NetBSD necat 3.1 NetBSD 3.1 (GENERIC)
#0: Tue Oct 31       04:27:07 UTC 2006  
builds@b0.netbsd.org:/home/builds/ab/netbsd-3-1-RELEASE/i386/200610302053Z-obj/home/builds/ab/netbsd-3-1-RELEASE/src/sys/arch/i386/compile/GENERIC
i386

    OS Linux: Linux FedoraCore5 2.6.15-1.2054_FC5 #1
Tue Mar 14 15:48:33 EST 2006 i686 i686 i386 GNU/Linux

Thanks in advance

Best regards
Nam Phan


      ____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs
--0-1361308450-1198659673=:65197
Content-Type: application/x-tar; name="case1.tar"
Content-Transfer-Encoding: base64
Content-Description: 376188617-case1.tar
Content-Disposition: attachment; filename="case1.tar"

Q2xpZW50X1NlcnZlck9uTmV0QlNELwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACAgIDc3NyAAICAgICAwIAAgICAgIDAgACAgICAgICAgICAw
IDEwNzM0MTQ2MzYxICAxMDA3NyAANQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABDbGllbnRfU2VydmVyT25OZXRCU0QvY2xpZW50
Ni5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgNzc3IAAgICAgIDAgACAg
ICAgMCAAICAgICAgIDUzNzMgMTA3MzQxMjM0NzMgIDExNzAxIAAwAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8qCioqIGNsaWVu
dC5jIC0tIGEgZGF0YWdyYW0gc29ja2V0IGNsaWVudCBkZW1vCiovCiNpbmNs
dWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx1
bmlzdGQuaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxzdHJpbmcu
aD4KI2luY2x1ZGUgPG5ldGRiLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K
I2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQu
aD4KI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiNkZWZpbmUgUE9SVCAxMjM0IC8v
IHRoZSBwb3J0IGNsaWVudCB3aWxsIGJlIGNvbm5lY3RpbmcgdG8KI2RlZmlu
ZSBNUE9SVCA0NTg3CiNkZWZpbmUgTUFYREFUQVNJWkUgMTAwIC8vIG1heCBu
dW1iZXIgb2YgYnl0ZXMgd2UgY2FuIGdldCBhdCBvbmNlCiNkZWZpbmUgTUFY
QlVGTEVOIDEwMAppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7
CiAgICBpbnQgc29ja2ZkLCBudW1ieXRlczsKICAgIGNoYXIgYnVmW01BWERB
VEFTSVpFXTsKICAgIHN0cnVjdCBob3N0ZW50ICpoZTsKICAgIHN0cnVjdCBz
b2NrYWRkcl9pbjYgdGhlaXJfYWRkcjsgLy8gY29ubmVjdG9yknMgYWRkcmVz
cyBpbmZvcm1hdGlvbgogICAgc3RydWN0IHNvY2thZGRyX2luNiBteV9hZGRy
OwogICAgc3RydWN0IHNvY2thZGRyX2luNiAqbXlfYWRkclAgPSAoc3RydWN0
IHNvY2thZGRyX2luNiopJm15X2FkZHI7CiAgICBjaGFyIGNhZGRyWzE2XTsK
ICAgIGludCBpPTA7CglzdHJ1Y3QgYWRkcmluZm8gaGludHMsICpyZXMsICpy
ZXMwOwoJaW50IGVycm9yOwoJY29uc3QgY2hhciAqY2F1c2UgPSBOVUxMOwog
ICAgaW50IHY2b25seSA9IDA7CiAgICBpbnQgYWRkcl9sZW47CiAgICBzdHJ1
Y3QgaW42X2FkZHIgbWFkZHIgPSBJTjZBRERSX0FOWV9JTklUOwoJc3RydWN0
IHBvbGxmZCB1ZmRzWzFdOwoJaW50IHJ2OwkKCgltZW1zZXQoJmhpbnRzLCAw
LCBzaXplb2YoaGludHMpKTsKCQogICAgY2hhciAqZGF0YT0gIkhlbGxvIFdv
cmxkIjsKIAoJaWYgKChzb2NrZmQgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tf
REdSQU0sIDApKSA9PSAtMSkgewoJCQlwZXJyb3IoInNvY2tldCIpOwoJCQll
eGl0KDEpOwogICAgfQoJaWYgKHNldHNvY2tvcHQoc29ja2ZkLCBJUFBST1RP
X0lQVjYsIElQVjZfVjZPTkxZLCAmdjZvbmx5LCBzaXplb2YoaW50KSkgPT0g
LTEpCgkgICAgcGVycm9yKCJWNk9OTFkiKTsKICAgIAogICAgbWVtc2V0KCZj
YWRkciwgMCwgMTYpOwogICAgZm9yKGk9MDsgaTwgMTY7IGkrKykKICAgICAg
ICBjYWRkcltpXSA9IDA7CgogICAgbXlfYWRkclAtPnNpbjZfZmFtaWx5ID0g
QUZfSU5FVDY7IC8vIGhvc3QgYnl0ZSBvcmRlcgogICAgbXlfYWRkclAtPnNp
bjZfcG9ydCA9IGh0b25zKFBPUlQpOyAvLyBzaG9ydCwgbmV0d29yayBieXRl
IG9yZGVyCiAgICBtZW1jcHkoKHZvaWQgKikmKG15X2FkZHJQLT5zaW42X2Fk
ZHIpLCBjYWRkciwgMTYgKTsKICAgIGlmIChiaW5kKHNvY2tmZCwgKHN0cnVj
dCBzb2NrYWRkciAqKSZteV9hZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luNikpID09IC0xKSB7CiAgICAgICAgcGVycm9yKCJiaW5kIik7CiAgICAg
ICAgZXhpdCgxKTsKICAgIH0KCiAgICAvLyJGRjE1OjA6MDowOjA6MDowOjEy
MzQiIC0tICIgLTEgMjEgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTggNTIi
CiAgICBpbmV0X3B0b24oQUZfSU5FVDYsICJGRjE1OjA6MDowOjA6MDowOjEy
MzQiLCAmbWFkZHIpOwogICAgdGhlaXJfYWRkci5zaW42X2ZhbWlseSA9IEFG
X0lORVQ2OwogICAgdGhlaXJfYWRkci5zaW42X3BvcnQgPSBodG9ucyhNUE9S
VCk7CiAgICBtZW1jcHkoKHZvaWQgKikmKHRoZWlyX2FkZHIuc2luNl9hZGRy
KSwgbWFkZHIuczZfYWRkciwgMTYgKTsKCglmb3IoaSA9IDA7IGkgPCA2OyBp
KyspewoJCWlmICgobnVtYnl0ZXMgPSBzZW5kdG8oc29ja2ZkLCBkYXRhLCBz
dHJsZW4oZGF0YSksIDAsIChzdHJ1Y3Qgc29ja2FkZHIgKikmdGhlaXJfYWRk
ciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSkgPT0gLTEpIHsKCQkJ
cGVycm9yKCJzZW5kdG8iKTsKCQkJZXhpdCgxKTsKCQl9CgkgICAgcHJpbnRm
KCJjbGllbnQgc2VudCAlZCBieXRlcyBsb25nc1xuIiwgbnVtYnl0ZXMpOwoJ
ICAgIHVmZHNbMF0uZmQgPSBzb2NrZmQ7CgkgICAgdWZkc1swXS5ldmVudHMg
PSBQT0xMSU4gfCBQT0xMUFJJOwoJICAgIHJ2ID0gcG9sbCh1ZmRzLCAxLCAx
MDAwMCk7CgkgICAgaWYgKHJ2ID09IC0xKSB7CgkgICAgICAgIHBlcnJvcigi
cG9sbCIpOyAvLyBlcnJvciBvY2N1cnJlZCBpbiBwb2xsKCkKCSAgICB9IGVs
c2UgaWYgKHJ2ID09IDApIHsKCSAgICAgICAgcHJpbnRmKCJUaW1lb3V0IG9j
Y3VycmVkISBObyBkYXRhIGFmdGVyIDEwIHNlY29uZHMuXG4iKTsKCQkJcHJp
bnRmKCJUcnkgdG8gc2VuZCBkYXRhIGFnYWluXG4iKTsKCQkJY29udGludWU7
CgkgICAgfSBlbHNlIHsKCQkgICAgYWRkcl9sZW4gPSBzaXplb2Yoc3RydWN0
IHNvY2thZGRyX2luNik7CgkJICAgIGlmICgobnVtYnl0ZXM9cmVjdmZyb20o
c29ja2ZkLCBidWYsIE1BWERBVEFTSVpFLTEgLCAwLChzdHJ1Y3Qgc29ja2Fk
ZHIgKikmdGhlaXJfYWRkciwgJmFkZHJfbGVuKSkgPT0gLTEpIAoJCSAgICB7
CgkJICAgICAgICBwZXJyb3IoInJlY3Zmcm9tIik7CgkJICAgICAgICBleGl0
KDEpOwoJCSAgICB9IGVsc2UgYnJlYWs7CgkJfQoJfQogICAgYnVmW251bWJ5
dGVzXSA9ICdcMCc7CiAgICBwcmludGYoIlJlY2VpdmVkOiAlc1xuIixidWYp
OwogICAgcHJpbnRmKCJcbiIpOwogICAgY2xvc2Uoc29ja2ZkKTsKICAgIHJl
dHVybiAwOwp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AENsaWVudF9TZXJ2ZXJPbk5ldEJTRC9zZXJ2ZXI2LmMAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAgICA3NzcgACAgICAgMCAAICAgICAwIAAgICAgICAgNzc3
MyAxMDczNDEyNTE3NiAgMTE3NDEgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALyoKKiogc2VydmVyLmMgLS0gYSBzdHJlYW0g
c29ja2V0IHNlcnZlciBkZW1vCiovCiNpbmNsdWRlIDxzdGRpby5oPgojaW5j
bHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUg
PGVycm5vLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN5cy90
eXBlcy5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgojaW5jbHVkZSA8bmV0
aW5ldC9pbi5oPgojaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiNpbmNsdWRlIDxz
eXMvd2FpdC5oPgojaW5jbHVkZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxuZXQv
aWYuaD4KI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiNkZWZpbmUgTUFYQlVGTEVO
IDEwMAojZGVmaW5lIE1ZUE9SVCA0NTg3IC8vIHRoZSBwb3J0IHVzZXJzIHdp
bGwgYmUgY29ubmVjdGluZyB0bwojZGVmaW5lIEJBQ0tMT0cgMTAgLy8gaG93
IG1hbnkgcGVuZGluZyBjb25uZWN0aW9ucyBxdWV1ZSB3aWxsIGhvbGQKdm9p
ZCBzaWdjaGxkX2hhbmRsZXIoaW50IHMpCnsKICAgIHdoaWxlKHdhaXRwaWQo
LTEsIE5VTEwsIFdOT0hBTkcpID4gMCk7Cn0KaW50IG1haW4odm9pZCkKewog
ICAgaW50IHNvY2tmZCwgbmV3X2ZkOyAvLyBsaXN0ZW4gb24gc29ja19mZCwg
bmV3IGNvbm5lY3Rpb24gb24gbmV3X2ZkCiAgICBzdHJ1Y3Qgc29ja2FkZHJf
aW42IG15X2FkZHI7IC8vIG15IGFkZHJlc3MgaW5mb3JtYXRpb24KICAgIHN0
cnVjdCBzb2NrYWRkcl9pbjYgKm15X2FkZHJQID0gKHN0cnVjdCBzb2NrYWRk
cl9pbjYqKSZteV9hZGRyOwogICAgc3RydWN0IHNvY2thZGRyX2luNiB0aGVp
cl9hZGRyOyAvLyBjb25uZWN0b3KScyBhZGRyZXNzIGluZm9ybWF0aW9uCiAg
ICBzb2NrbGVuX3Qgc2luX3NpemU7CiAgICBjaGFyIGNhZGRyWzE2XTsKICAg
IGludCBpPTA7CiAgICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhOwogICAgaW50IHll
cz0xOwogICAgaW50IGxlbiA9IDI4OwoJaW50IHY2b25seT0wOwogICAgaW50
IGFkZHJfbGVuOwogICAgaW50IG51bWJ5dGVzID0gMDsKICAgIGNoYXIgYnVm
W01BWEJVRkxFTl07CiAgICBjaGFyIG11bHRpQWRkclsxNl07CiAgICBzdHJ1
Y3QgaXB2Nl9tcmVxIG1uYW1lNjsKICAgIGludCBpbmRleCwgaW5kZXgxOwog
ICAgaW50IGxlbl9pbmRleCA9IHNpemVvZihpbmRleCk7CiAgICBzdHJ1Y3Qg
cG9sbGZkIHVmZHNbMV07CiAgICBpbnQgcnY7CiAgICBzdHJ1Y3QgaW42X2Fk
ZHIgbWFkZHIgPSBJTjZBRERSX0FOWV9JTklUOwoKICAgIGlmICgoc29ja2Zk
ID0gc29ja2V0KEFGX0lORVQ2LCBTT0NLX0RHUkFNLCAwKSkgPT0gLTEpIHsK
ICAgICAgICBwZXJyb3IoInNvY2tldCIpOwogICAgICAgIGV4aXQoMSk7CiAg
ICB9CglpZiAoc2V0c29ja29wdChzb2NrZmQsIElQUFJPVE9fSVBWNiwgSVBW
Nl9WNk9OTFksICZ2Nm9ubHksIHNpemVvZihpbnQpKSA9PSAtMSkKCQlwZXJy
b3IoIlY2T05MWSIpOwogICAgCiAgICBpZiAoc2V0c29ja29wdChzb2NrZmQs
U09MX1NPQ0tFVCxTT19SRVVTRUFERFIsJnllcyxzaXplb2YoaW50KSkgPT0g
LTEpIHsKICAgICAgICBwZXJyb3IoInNldHNvY2tvcHQiKTsKICAgICAgICBl
eGl0KDEpOwogICAgfQogICAgbWVtc2V0KCZjYWRkciwgMCwgMTYpOwogICAg
Zm9yKGk9MDsgaTwgMTY7IGkrKykKICAgICAgICBjYWRkcltpXSA9IDA7Cgog
ICAgbXlfYWRkclAtPnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7IC8vIGhvc3Qg
Ynl0ZSBvcmRlcgogICAgbXlfYWRkclAtPnNpbjZfcG9ydCA9IGh0b25zKE1Z
UE9SVCk7IC8vIHNob3J0LCBuZXR3b3JrIGJ5dGUgb3JkZXIKICAgIG1lbWNw
eSgodm9pZCAqKSYobXlfYWRkclAtPnNpbjZfYWRkciksIGNhZGRyLCAxNiAp
OwogICAgaWYgKGJpbmQoc29ja2ZkLCAoc3RydWN0IHNvY2thZGRyICopJm15
X2FkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgPT0gLTEpIHsK
ICAgICAgICBwZXJyb3IoImJpbmQiKTsKICAgICAgICBleGl0KDEpOwogICAg
fQoJaW5kZXgxID0gMTsKCWlmIChzZXRzb2Nrb3B0KHNvY2tmZCwgSVBQUk9U
T19JUFY2LCBJUFY2X01VTFRJQ0FTVF9JRiwgKGNvbnN0IGNoYXIqKSZpbmRl
eDEsIHNpemVvZihpbmRleDEpKSA8IDApewoJCXBlcnJvcigic2V0c29ja29w
dCIpOwoJCWV4aXQoMSk7Cgl9CQogICAgIC8vIkZGMTU6MDowOjA6MDowOjA6
MTIzNCIgLS0gIiAtMSAyMSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxOCA1
MiIKICAgIGluZXRfcHRvbihBRl9JTkVUNiwgIkZGMTU6MDowOjA6MDowOjA6
MTIzNCIsICZtYWRkcik7CiAgICBtZW1jcHkoKHZvaWQgKikmKG1uYW1lNi5p
cHY2bXJfbXVsdGlhZGRyKSwgbWFkZHIuczZfYWRkciwgc2l6ZW9mKHN0cnVj
dCBpbjZfYWRkcikpOwogICAgaWYgKGdldHNvY2tvcHQoc29ja2ZkLCBJUFBS
T1RPX0lQVjYsIElQVjZfTVVMVElDQVNUX0lGLCAoY2hhciopJmluZGV4LCAo
c29ja2xlbl90KikmbGVuX2luZGV4KSA8IDApIHsKICAgICAgICBwZXJyb3Io
ImdldHNvY2tvcHQiKTsKICAgICAgICBleGl0KDEpOwogICAgfQogICAgcHJp
bnRmKCJjdXJyZW50IGludGVyZmFjZSBvZiBzZXJ2ZXIgaXMgJWRcbiIsIGlu
ZGV4KTsKICAgIG1uYW1lNi5pcHY2bXJfaW50ZXJmYWNlID0gaW5kZXg7CiAg
ICAvL0pvaW4gdGhlIG11bHRpY2FzdCBncm91cCAKICAgIGlmIChzZXRzb2Nr
b3B0KHNvY2tmZCwgSVBQUk9UT19JUFY2LCBJUFY2X0pPSU5fR1JPVVAsIChj
aGFyICopICZtbmFtZTYsIHNpemVvZiAobW5hbWU2KSkgPCAwKSB7CiAgICAg
ICAgcGVycm9yKCJzZXRzb2Nrb3B0Iik7CiAgICAgICAgZXhpdCgxKTsKICAg
IH0KCiAgICAKICAgIHNhLnNhX2hhbmRsZXIgPSBzaWdjaGxkX2hhbmRsZXI7
IC8vIHJlYXAgYWxsIGRlYWQgcHJvY2Vzc2VzCiAgICBzaWdlbXB0eXNldCgm
c2Euc2FfbWFzayk7CiAgICBzYS5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7CiAg
ICBpZiAoc2lnYWN0aW9uKFNJR0NITEQsICZzYSwgTlVMTCkgPT0gLTEpIHsK
ICAgICAgICBwZXJyb3IoInNpZ2FjdGlvbiIpOwogICAgICAgIGV4aXQoMSk7
CiAgICB9CiAgICBhZGRyX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
aW42KTsKICAgIHByaW50Zigic2VydmVyIGlzIHVwIGFuZCBqb2luIGdyb3Vw
IG11bHRpY2FzdCBhZGRyZXNzIG5vdyBhbmQgd2FpdGluZyBvbiBwb3J0ICVk
XG4iLCBNWVBPUlQpOwogICAgdWZkc1swXS5mZCA9IHNvY2tmZDsKICAgIHVm
ZHNbMF0uZXZlbnRzID0gUE9MTElOIHwgUE9MTFBSSTsKICAgIHJ2ID0gcG9s
bCh1ZmRzLCAxLCAxMjAwMDApOwogICAgaWYgKHJ2ID09IC0xKSB7CiAgICAg
ICAgcGVycm9yKCJwb2xsIik7IC8vIGVycm9yIG9jY3VycmVkIGluIHBvbGwo
KQogICAgfSBlbHNlIGlmIChydiA9PSAwKSB7CiAgICAgICAgcHJpbnRmKCJU
aW1lb3V0IG9jY3VycmVkISBObyBkYXRhIGFmdGVyIDYwIHNlY29uZHMuXG4i
KTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gY2hlY2sgZm9yIGV2ZW50cyBv
biBzMToKICAgICAgICBpZiAodWZkc1swXS5yZXZlbnRzICYgUE9MTElOKSB7
CiAgICAgICAgICAgIGlmICgobnVtYnl0ZXM9cmVjdmZyb20oc29ja2ZkLCBi
dWYsIE1BWEJVRkxFTi0xICwgMCwoc3RydWN0IHNvY2thZGRyICopJnRoZWly
X2FkZHIsICZhZGRyX2xlbikpID09IC0xKSAKICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgcGVycm9yKCJyZWN2ZnJvbSIpOwogICAgICAgICAgICAg
ICAgZXhpdCgxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCX0KCXByaW50
ZigicGFja2V0IGlzICVkIGJ5dGVzIGxvbmdcbiIsbnVtYnl0ZXMpOwogICAg
aWYgKG51bWJ5dGVzID4gMCl7CiAgICAgICAgYnVmW251bWJ5dGVzXSA9ICdc
MCc7CiAgICAgICAgcHJpbnRmKCJwYWNrZXQgY29udGFpbnMgXCIlc1wiXG4i
LGJ1Zik7CiAgICB9CiAgICAvL3NlbmQgcmVjZWl2ZWQgZGF0YSB0byBjbGll
bnQKICAgIGlmICgobnVtYnl0ZXMgPSBzZW5kdG8oc29ja2ZkLCBidWYsIHN0
cmxlbihidWYpLCAwLCAoc3RydWN0IHNvY2thZGRyICopJnRoZWlyX2FkZHIs
IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkpID09IC0xKSB7CgkJcGVy
cm9yKCJzZW5kdG8iKTsKCQlleGl0KDEpOwoJfQoKCWNsb3NlKHNvY2tmZCk7
CglyZXR1cm4gMDsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAA=

--0-1361308450-1198659673=:65197
Content-Type: application/x-tar; name="case2.tar"
Content-Transfer-Encoding: base64
Content-Description: 382367475-case2.tar
Content-Disposition: attachment; filename="case2.tar"

Q2xpZW50IG9uIGFub3RoZXIgbWFjaGluZSAmIFNlcnZlciBvbiBOZXRCU0Qv
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACAgIDc3NyAAICAgICAwIAAgICAgIDAgACAgICAgICAgICAw
IDEwNzM0MTQ2MzUxICAxMzY1MCAANQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABDbGllbnQgb24gYW5vdGhlciBtYWNoaW5lICYg
U2VydmVyIG9uIE5ldEJTRC9jbGllbnQ2LmMAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgNzc3IAAgICAgIDAgACAg
ICAgMCAAICAgICAgIDU1MzUgMTA3MzQwNzU2NzcgIDE1NDY3IAAwAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8qCioqIGNsaWVu
dC5jIC0tIGEgZGF0YWdyYW0gc29ja2V0IGNsaWVudCBkZW1vCiovCiNpbmNs
dWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx1
bmlzdGQuaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxzdHJpbmcu
aD4KI2luY2x1ZGUgPG5ldGRiLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K
I2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQu
aD4KI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiNkZWZpbmUgUE9SVCAxMjM0IC8v
IHRoZSBwb3J0IGNsaWVudCB3aWxsIGJlIGNvbm5lY3RpbmcgdG8KI2RlZmlu
ZSBNUE9SVCA0NTg3CiNkZWZpbmUgTUFYREFUQVNJWkUgMTAwIC8vIG1heCBu
dW1iZXIgb2YgYnl0ZXMgd2UgY2FuIGdldCBhdCBvbmNlCiNkZWZpbmUgTUFY
QlVGTEVOIDEwMAppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7
CiAgICBpbnQgc29ja2ZkLCBudW1ieXRlczsKICAgIGNoYXIgYnVmW01BWERB
VEFTSVpFXTsKICAgIHN0cnVjdCBob3N0ZW50ICpoZTsKICAgIHN0cnVjdCBz
b2NrYWRkcl9pbjYgdGhlaXJfYWRkcjsgLy8gY29ubmVjdG9yknMgYWRkcmVz
cyBpbmZvcm1hdGlvbgogICAgc3RydWN0IHNvY2thZGRyX2luNiBteV9hZGRy
OwogICAgc3RydWN0IHNvY2thZGRyX2luNiAqbXlfYWRkclAgPSAoc3RydWN0
IHNvY2thZGRyX2luNiopJm15X2FkZHI7CiAgICBjaGFyIGNhZGRyWzE2XTsK
ICAgIGludCBpPTA7CglzdHJ1Y3QgYWRkcmluZm8gaGludHMsICpyZXMsICpy
ZXMwOwoJaW50IGVycm9yOwoJY29uc3QgY2hhciAqY2F1c2UgPSBOVUxMOwog
ICAgaW50IHY2b25seSA9IDA7CiAgICBpbnQgYWRkcl9sZW47CiAgICBzdHJ1
Y3QgaW42X2FkZHIgbWFkZHIgPSBJTjZBRERSX0FOWV9JTklUOwoJc3RydWN0
IHBvbGxmZCB1ZmRzWzFdOwoJaW50IHJ2OwoKCW1lbXNldCgmaGludHMsIDAs
IHNpemVvZihoaW50cykpOwoJCiAgICBjaGFyICpkYXRhPSAiSGVsbG8gV29y
bGQiOwogCglpZiAoKHNvY2tmZCA9IHNvY2tldChBRl9JTkVUNiwgU09DS19E
R1JBTSwgMCkpID09IC0xKSB7CgkJCXBlcnJvcigic29ja2V0Iik7CgkJCWV4
aXQoMSk7CiAgICB9CglpZiAoc2V0c29ja29wdChzb2NrZmQsIElQUFJPVE9f
SVBWNiwgSVBWNl9WNk9OTFksICZ2Nm9ubHksIHNpemVvZihpbnQpKSA9PSAt
MSkKCSAgICBwZXJyb3IoIlY2T05MWSIpOwogICAgCiAgICBtZW1zZXQoJmNh
ZGRyLCAwLCAxNik7CiAgICBmb3IoaT0wOyBpPCAxNjsgaSsrKQogICAgICAg
IGNhZGRyW2ldID0gMDsKCiAgICBteV9hZGRyUC0+c2luNl9mYW1pbHkgPSBB
Rl9JTkVUNjsgLy8gaG9zdCBieXRlIG9yZGVyCiAgICBteV9hZGRyUC0+c2lu
Nl9wb3J0ID0gaHRvbnMoUE9SVCk7IC8vIHNob3J0LCBuZXR3b3JrIGJ5dGUg
b3JkZXIKICAgIG1lbWNweSgodm9pZCAqKSYobXlfYWRkclAtPnNpbjZfYWRk
ciksIGNhZGRyLCAxNiApOwogICAgaWYgKGJpbmQoc29ja2ZkLCAoc3RydWN0
IHNvY2thZGRyICopJm15X2FkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
aW42KSkgPT0gLTEpIHsKICAgICAgICBwZXJyb3IoImJpbmQiKTsKICAgICAg
ICBleGl0KDEpOwogICAgfQoKICAgIC8vIkZGMTU6MDowOjA6MDowOjA6MTIz
NCIgLS0gIiAtMSAyMSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxOCA1MiIK
ICAgIGluZXRfcHRvbihBRl9JTkVUNiwgIkZGMTU6MDowOjA6MDowOjA6MTIz
NCIsICZtYWRkcik7CiAgICB0aGVpcl9hZGRyLnNpbjZfZmFtaWx5ID0gQUZf
SU5FVDY7CiAgICB0aGVpcl9hZGRyLnNpbjZfcG9ydCA9IGh0b25zKE1QT1JU
KTsKICAgIG1lbWNweSgodm9pZCAqKSYodGhlaXJfYWRkci5zaW42X2FkZHIp
LCBtYWRkci5zNl9hZGRyLCAxNiApOwoJYWRkcl9sZW4gPSBzaXplb2Yoc3Ry
dWN0IHNvY2thZGRyX2luNik7Cglmb3IoaSA9IDA7IGkgPCA2OyBpKyspewoJ
CWlmICgobnVtYnl0ZXMgPSBzZW5kdG8oc29ja2ZkLCBkYXRhLCBzdHJsZW4o
ZGF0YSksIDAsIChzdHJ1Y3Qgc29ja2FkZHIgKikmdGhlaXJfYWRkciwgc2l6
ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSkgPT0gLTEpIHsKCQkJcGVycm9y
KCJzZW5kdG8iKTsKCQkJZXhpdCgxKTsKCQl9CgkgICAgcHJpbnRmKCJjbGll
bnQgc2VudCAlZCBieXRlcyBsb25nc1xuIiwgbnVtYnl0ZXMpOwoJICAgIHVm
ZHNbMF0uZmQgPSBzb2NrZmQ7CgkgICAgdWZkc1swXS5ldmVudHMgPSBQT0xM
SU4gfCBQT0xMUFJJOwoJICAgIHJ2ID0gcG9sbCh1ZmRzLCAxLCAxMDAwMCk7
CgkgICAgaWYgKHJ2ID09IC0xKSB7CgkgICAgICAgIHBlcnJvcigicG9sbCIp
OyAvLyBlcnJvciBvY2N1cnJlZCBpbiBwb2xsKCkKCSAgICB9IGVsc2UgaWYg
KHJ2ID09IDApIHsKCSAgICAgICAgcHJpbnRmKCJUaW1lb3V0IG9jY3VycmVk
ISBObyBkYXRhIGFmdGVyIDEwIHNlY29uZHMuXG4iKTsKCQkJcHJpbnRmKCJU
cnkgdG8gc2VuZCBkYXRhIGFnYWluXG4iKTsKCQkJY29udGludWU7CgkgICAg
fSBlbHNlIHsKCSAgICAgICAgLy8gY2hlY2sgZm9yIGV2ZW50cyBvbiBzMToK
CSAgICAgICAgaWYgKHVmZHNbMF0ucmV2ZW50cyAmIFBPTExJTikgewoJICAg
ICAgICAgICAgaWYgKChudW1ieXRlcz1yZWN2ZnJvbShzb2NrZmQsIGJ1Ziwg
TUFYREFUQVNJWkUtMSAsIDAsKHN0cnVjdCBzb2NrYWRkciAqKSZ0aGVpcl9h
ZGRyLCAmCQkJCQkJYWRkcl9sZW4pKSA9PSAtMSkgCgkJCSAgICB7CgkJCSAg
ICAgICAgcGVycm9yKCJyZWN2ZnJvbSIpOwoJCQkgICAgICAgIGV4aXQoMSk7
CgkJCSAgICB9IGVsc2UgYnJlYWs7CgkgICAgICAgIH0KCQl9Cgl9CiAgICBi
dWZbbnVtYnl0ZXNdID0gJ1wwJzsKICAgIHByaW50ZigiUmVjZWl2ZWQ6ICVz
XG4iLGJ1Zik7CiAgICBwcmludGYoIlxuIik7CiAgICBjbG9zZShzb2NrZmQp
OwogICAgcmV0dXJuIDA7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AENsaWVudCBvbiBhbm90aGVyIG1hY2hpbmUgJiBTZXJ2ZXIgb24gTmV0QlNE
L3NlcnZlcjYuYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAgICA3NzcgACAgICAgMCAAICAgICAwIAAgICAgICAxMDIx
NCAxMDczNDEzMDA0NSAgMTU1MDIgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALyoKKiogc2VydmVyLmMgLS0gYSBzdHJlYW0g
c29ja2V0IHNlcnZlciBkZW1vCiovCiNpbmNsdWRlIDxzdGRpby5oPgojaW5j
bHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUg
PGVycm5vLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN5cy90
eXBlcy5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgojaW5jbHVkZSA8bmV0
aW5ldC9pbi5oPgojaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiNpbmNsdWRlIDxz
eXMvd2FpdC5oPgojaW5jbHVkZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxuZXQv
aWYuaD4KI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiNkZWZpbmUgTUFYQlVGTEVO
IDEwMAojZGVmaW5lIE1ZUE9SVCA0NTg3IC8vIHRoZSBwb3J0IHVzZXJzIHdp
bGwgYmUgY29ubmVjdGluZyB0bwojZGVmaW5lIEJBQ0tMT0cgMTAgLy8gaG93
IG1hbnkgcGVuZGluZyBjb25uZWN0aW9ucyBxdWV1ZSB3aWxsIGhvbGQKdm9p
ZCBzaWdjaGxkX2hhbmRsZXIoaW50IHMpCnsKICAgIHdoaWxlKHdhaXRwaWQo
LTEsIE5VTEwsIFdOT0hBTkcpID4gMCk7Cn0KaW50IG1haW4odm9pZCkKewog
ICAgaW50IHNvY2tmZCwgbmV3X2ZkOyAvLyBsaXN0ZW4gb24gc29ja19mZCwg
bmV3IGNvbm5lY3Rpb24gb24gbmV3X2ZkCiAgICBzdHJ1Y3Qgc29ja2FkZHJf
aW42IG15X2FkZHI7IC8vIG15IGFkZHJlc3MgaW5mb3JtYXRpb24KICAgIHN0
cnVjdCBzb2NrYWRkcl9pbjYgKm15X2FkZHJQID0gKHN0cnVjdCBzb2NrYWRk
cl9pbjYqKSZteV9hZGRyOwogICAgc3RydWN0IHNvY2thZGRyX2luNiB0aGVp
cl9hZGRyOyAvLyBjb25uZWN0b3KScyBhZGRyZXNzIGluZm9ybWF0aW9uCiAg
ICBzb2NrbGVuX3Qgc2luX3NpemU7CiAgICBjaGFyIGNhZGRyWzE2XTsKICAg
IGludCBpPTA7CiAgICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhOwogICAgaW50IHll
cz0xOwogICAgaW50IGxlbiA9IDI4OwoJaW50IHY2b25seT0wOwogICAgaW50
IGFkZHJfbGVuOwogICAgaW50IG51bWJ5dGVzID0gMDsKICAgIGNoYXIgYnVm
W01BWEJVRkxFTl07CiAgICBjaGFyIG11bHRpQWRkclsxNl07CiAgICBzdHJ1
Y3QgaXB2Nl9tcmVxIG1uYW1lNjsKICAgIGludCBpbmRleDsKICAgIGludCBs
ZW5faW5kZXggPSBzaXplb2YoaW5kZXgpOwogICAgc3RydWN0IHBvbGxmZCB1
ZmRzWzFdOwogICAgaW50IHJ2OwogICAgc3RydWN0IGluNl9hZGRyIG1hZGRy
ID0gSU42QUREUl9BTllfSU5JVDsKCXN0cnVjdCBpbjZfYWRkciBhZGRyID0g
SU42QUREUl9BTllfSU5JVDsKCWludCBpbmRleDE7CgogICAgaWYgKChzb2Nr
ZmQgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfREdSQU0sIDApKSA9PSAtMSkg
ewogICAgICAgIHBlcnJvcigic29ja2V0Iik7CiAgICAgICAgZXhpdCgxKTsK
ICAgIH0KCWlmIChzZXRzb2Nrb3B0KHNvY2tmZCwgSVBQUk9UT19JUFY2LCBJ
UFY2X1Y2T05MWSwgJnY2b25seSwgc2l6ZW9mKGludCkpID09IC0xKQoJCXBl
cnJvcigiVjZPTkxZIik7CiAgICAKICAgIGlmIChzZXRzb2Nrb3B0KHNvY2tm
ZCxTT0xfU09DS0VULFNPX1JFVVNFQUREUiwmeWVzLHNpemVvZihpbnQpKSA9
PSAtMSkgewogICAgICAgIHBlcnJvcigic2V0c29ja29wdCIpOwogICAgICAg
IGV4aXQoMSk7CiAgICB9CiAgICBtZW1zZXQoJmNhZGRyLCAwLCAxNik7CiAg
ICBmb3IoaT0wOyBpPCAxNjsgaSsrKQogICAgICAgIGNhZGRyW2ldID0gMDsK
CiAgICBteV9hZGRyUC0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsgLy8gaG9z
dCBieXRlIG9yZGVyCiAgICBteV9hZGRyUC0+c2luNl9wb3J0ID0gaHRvbnMo
TVlQT1JUKTsgLy8gc2hvcnQsIG5ldHdvcmsgYnl0ZSBvcmRlcgogICAgbWVt
Y3B5KCh2b2lkICopJihteV9hZGRyUC0+c2luNl9hZGRyKSwgY2FkZHIsIDE2
ICk7CiAgICBpZiAoYmluZChzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikm
bXlfYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA9PSAtMSkg
ewogICAgICAgIHBlcnJvcigiYmluZCIpOwogICAgICAgIGV4aXQoMSk7CiAg
ICB9CgkKCS8vd2UgbXVzdCBzZXQgaW50ZXJmYWNlIGZvciB0aGlzIGFkZHJl
c3MuCgkvL2FzdW1lIHRoYXQgdGhpcyBpbnRlcmZhY2UgZm9yIHRpaHMgYWRk
cmVzcyBpcyAxOwoJaW5kZXgxID0gMDsKCWlmIChzZXRzb2Nrb3B0KHNvY2tm
ZCwgSVBQUk9UT19JUFY2LCBJUFY2X01VTFRJQ0FTVF9JRiwgKGNvbnN0IGNo
YXIqKSZpbmRleDEsIHNpemVvZihpbmRleDEpKSA8IDApewoJCXBlcnJvcigi
c2V0c29ja29wdCIpOwoJCWV4aXQoMSk7Cgl9CgkKICAgICAvLyJGRjE1OjA6
MDowOjA6MDowOjEyMzQiIC0tICIgLTEgMjEgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMTggNTIiCiAgICBpbmV0X3B0b24oQUZfSU5FVDYsICJGRjE1OjA6
MDowOjA6MDowOjEyMzQiLCAmbWFkZHIpOwogICAgbWVtY3B5KCh2b2lkICop
JihtbmFtZTYuaXB2Nm1yX211bHRpYWRkciksIG1hZGRyLnM2X2FkZHIsIHNp
emVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKICAgIGlmIChnZXRzb2Nrb3B0KHNv
Y2tmZCwgSVBQUk9UT19JUFY2LCBJUFY2X01VTFRJQ0FTVF9JRiwgKGNoYXIq
KSZpbmRleCwgKHNvY2tsZW5fdCopJmxlbl9pbmRleCkgPCAwKSB7CiAgICAg
ICAgcGVycm9yKCJnZXRzb2Nrb3B0Iik7CiAgICAgICAgZXhpdCgxKTsKICAg
IH0KCXByaW50ZigiY3VycmVudCBpbnRlcmZhY2Ugb2Ygc2VydmVyIGlzICVk
XG4iLCBpbmRleCk7ICAgIAogICAgbW5hbWU2LmlwdjZtcl9pbnRlcmZhY2Ug
PSBpbmRleDsKICAgIC8vSm9pbiB0aGUgbXVsdGljYXN0IGdyb3VwIAogICAg
aWYgKHNldHNvY2tvcHQoc29ja2ZkLCBJUFBST1RPX0lQVjYsIElQVjZfSk9J
Tl9HUk9VUCwgKGNoYXIgKikgJm1uYW1lNiwgc2l6ZW9mIChtbmFtZTYpKSA8
IDApIHsKICAgICAgICBwZXJyb3IoInNldHNvY2tvcHQiKTsKICAgICAgICBl
eGl0KDEpOwogICAgfQoKICAgIAogICAgc2Euc2FfaGFuZGxlciA9IHNpZ2No
bGRfaGFuZGxlcjsgLy8gcmVhcCBhbGwgZGVhZCBwcm9jZXNzZXMKICAgIHNp
Z2VtcHR5c2V0KCZzYS5zYV9tYXNrKTsKICAgIHNhLnNhX2ZsYWdzID0gU0Ff
UkVTVEFSVDsKICAgIGlmIChzaWdhY3Rpb24oU0lHQ0hMRCwgJnNhLCBOVUxM
KSA9PSAtMSkgewogICAgICAgIHBlcnJvcigic2lnYWN0aW9uIik7CiAgICAg
ICAgZXhpdCgxKTsKICAgIH0KICAgIGFkZHJfbGVuID0gc2l6ZW9mKHN0cnVj
dCBzb2NrYWRkcl9pbjYpOwogICAgcHJpbnRmKCJzZXJ2ZXIgaXMgdXAgYW5k
IGpvaW4gZ3JvdXAgbXVsdGljYXN0IGFkZHJlc3Mgbm93IGFuZCB3YWl0aW5n
IG9uIHBvcnQgJWRcbiIsIE1ZUE9SVCk7CiAgICB1ZmRzWzBdLmZkID0gc29j
a2ZkOwogICAgdWZkc1swXS5ldmVudHMgPSBQT0xMSU4gfCBQT0xMUFJJOwog
ICAgcnYgPSBwb2xsKHVmZHMsIDEsIDYwMDAwKTsKICAgIGlmIChydiA9PSAt
MSkgewogICAgICAgIHBlcnJvcigicG9sbCIpOyAvLyBlcnJvciBvY2N1cnJl
ZCBpbiBwb2xsKCkKICAgIH0gZWxzZSBpZiAocnYgPT0gMCkgewogICAgICAg
IHByaW50ZigiVGltZW91dCBvY2N1cnJlZCEgTm8gZGF0YSBhZnRlciA2MCBz
ZWNvbmRzLlxuIik7CiAgICB9IGVsc2UgewogICAgICAgIC8vIGNoZWNrIGZv
ciBldmVudHMgb24gczE6CiAgICAgICAgaWYgKHVmZHNbMF0ucmV2ZW50cyAm
IFBPTExJTikgewogICAgICAgICAgICBpZiAoKG51bWJ5dGVzPXJlY3Zmcm9t
KHNvY2tmZCwgYnVmLCBNQVhCVUZMRU4tMSAsIDAsKHN0cnVjdCBzb2NrYWRk
ciAqKSZ0aGVpcl9hZGRyLCAmYWRkcl9sZW4pKSA9PSAtMSkgCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgIHBlcnJvcigicmVjdmZyb20iKTsKICAg
ICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9
Cgl9CglwcmludGYoInBhY2tldCBpcyAlZCBieXRlcyBsb25nXG4iLG51bWJ5
dGVzKTsKICAgIGlmIChudW1ieXRlcyA+IDApewogICAgICAgIGJ1ZltudW1i
eXRlc10gPSAnXDAnOwogICAgICAgIHByaW50ZigicGFja2V0IGNvbnRhaW5z
IFwiJXNcIlxuIixidWYpOwogICAgfQogICAgLy9zZW5kIHJlY2VpdmVkIGRh
dGEgdG8gY2xpZW50CiAgICBpZiAoKG51bWJ5dGVzID0gc2VuZHRvKHNvY2tm
ZCwgYnVmLCBzdHJsZW4oYnVmKSwgMCwgKHN0cnVjdCBzb2NrYWRkciAqKSZ0
aGVpcl9hZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpKSA9PSAt
MSkgewoJCXBlcnJvcigic2VuZHRvIik7CgkJZXhpdCgxKTsKCX0KCgljbG9z
ZShzb2NrZmQpOwoJcmV0dXJuIDA7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

--0-1361308450-1198659673=:65197
Content-Type: application/x-tar; name="case3.tar"
Content-Transfer-Encoding: base64
Content-Description: 118634312-case3.tar
Content-Disposition: attachment; filename="case3.tar"

Q2xpZW50IG9uIE5ldEJTRCBhbmQgU2VydmVyIG9uIGFub3RoZXIgbWFjaGlu
ZS8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACAgIDc3NyAAICAgICAwIAAgICAgIDAgACAgICAgICAgICAw
IDEwNzM0MTQ2MzU0ICAxNDI3MCAANQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABDbGllbnQgb24gTmV0QlNEIGFuZCBTZXJ2ZXIg
b24gYW5vdGhlciBtYWNoaW5lL2NsaWVudDYuYwAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgNzc3IAAgICAgIDAgACAg
ICAgMCAAICAgICAgIDUxNTEgMTA3MzQxMDUxNDEgIDE2MDUyIAAwAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8qCioqIGNsaWVu
dC5jIC0tIGEgc3RyZWFtIHNvY2tldCBjbGllbnQgZGVtbwoqLwojaW5jbHVk
ZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8dW5p
c3RkLmg+CiNpbmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+
CiNpbmNsdWRlIDxuZXRkYi5oPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNp
bmNsdWRlIDxuZXRpbmV0L2luLmg+CiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+
CiNpbmNsdWRlIDxzeXMvcG9sbC5oPgojZGVmaW5lIFBPUlQgMTIzNCAvLyB0
aGUgcG9ydCBjbGllbnQgd2lsbCBiZSBjb25uZWN0aW5nIHRvCiNkZWZpbmUg
TVBPUlQgNDU4NwojZGVmaW5lIE1BWERBVEFTSVpFIDEwMCAvLyBtYXggbnVt
YmVyIG9mIGJ5dGVzIHdlIGNhbiBnZXQgYXQgb25jZQojZGVmaW5lIE1BWEJV
RkxFTiAxMDAKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewog
ICAgaW50IHNvY2tmZCwgbnVtYnl0ZXM7CiAgICBjaGFyIGJ1ZltNQVhEQVRB
U0laRV07CiAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42IHRoZWlyX2FkZHI7IC8v
IGNvbm5lY3RvcpJzIGFkZHJlc3MgaW5mb3JtYXRpb24KICAgIHN0cnVjdCBz
b2NrYWRkcl9pbjYgbXlfYWRkcjsKICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYg
Km15X2FkZHJQID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYqKSZteV9hZGRyOwog
ICAgY2hhciBjYWRkclsxNl07CiAgICBpbnQgaT0wOwogICAgaW50IHY2b25s
eSA9IDA7CiAgICBpbnQgYWRkcl9sZW47CiAgICBzdHJ1Y3QgaW42X2FkZHIg
bWFkZHIgPSBJTjZBRERSX0FOWV9JTklUOwoJc3RydWN0IHBvbGxmZCB1ZmRz
WzFdOwoJaW50IHJ2OwoKICAgIGNoYXIgKmRhdGE9ICJIZWxsbyBXb3JsZCI7
CiAKCWlmICgoc29ja2ZkID0gc29ja2V0KEFGX0lORVQ2LCBTT0NLX0RHUkFN
LCAwKSkgPT0gLTEpIHsKCQkJcGVycm9yKCJzb2NrZXQiKTsKCQkJZXhpdCgx
KTsKICAgIH0KCWlmIChzZXRzb2Nrb3B0KHNvY2tmZCwgSVBQUk9UT19JUFY2
LCBJUFY2X1Y2T05MWSwgJnY2b25seSwgc2l6ZW9mKGludCkpID09IC0xKQoJ
ICAgIHBlcnJvcigiVjZPTkxZIik7CiAgICAKICAgIG1lbXNldCgmY2FkZHIs
IDAsIDE2KTsKICAgIGZvcihpPTA7IGk8IDE2OyBpKyspCiAgICAgICAgY2Fk
ZHJbaV0gPSAwOwoKICAgIG15X2FkZHJQLT5zaW42X2ZhbWlseSA9IEFGX0lO
RVQ2OyAvLyBob3N0IGJ5dGUgb3JkZXIKICAgIG15X2FkZHJQLT5zaW42X3Bv
cnQgPSBodG9ucyhQT1JUKTsgLy8gc2hvcnQsIG5ldHdvcmsgYnl0ZSBvcmRl
cgogICAgbWVtY3B5KCh2b2lkICopJihteV9hZGRyUC0+c2luNl9hZGRyKSwg
Y2FkZHIsIDE2ICk7CiAgICBpZiAoYmluZChzb2NrZmQsIChzdHJ1Y3Qgc29j
a2FkZHIgKikmbXlfYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYp
KSA9PSAtMSkgewogICAgICAgIHBlcnJvcigiYmluZCIpOwogICAgICAgIGV4
aXQoMSk7CiAgICB9CgogICAgLy8iRkYxNTowOjA6MDowOjA6MDoxMjM0IiAt
LSAiIC0xIDIxIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDE4IDUyIgogICAg
aW5ldF9wdG9uKEFGX0lORVQ2LCAiRkYxNTowOjA6MDowOjA6MDoxMjM0Iiwg
Jm1hZGRyKTsKICAgIHRoZWlyX2FkZHIuc2luNl9mYW1pbHkgPSBBRl9JTkVU
NjsKICAgIHRoZWlyX2FkZHIuc2luNl9wb3J0ID0gaHRvbnMoTVBPUlQpOwog
ICAgbWVtY3B5KCh2b2lkICopJih0aGVpcl9hZGRyLnNpbjZfYWRkciksIG1h
ZGRyLnM2X2FkZHIsIDE2ICk7CgkKCWZvcihpID0gMDsgaSA8IDY7IGkrKyl7
CgkJaWYgKChudW1ieXRlcyA9IHNlbmR0byhzb2NrZmQsIGRhdGEsIHN0cmxl
bihkYXRhKSwgMCwgKHN0cnVjdCBzb2NrYWRkciAqKSZ0aGVpcl9hZGRyLCBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpKSA9PSAtMSkgewoJCQlwZXJy
b3IoInNlbmR0byIpOwoJCQlleGl0KDEpOwoJCX0KCSAgICBwcmludGYoImNs
aWVudCBzZW50ICVkIGJ5dGVzIGxvbmdzXG4iLCBudW1ieXRlcyk7CgkgICAg
dWZkc1swXS5mZCA9IHNvY2tmZDsKCSAgICB1ZmRzWzBdLmV2ZW50cyA9IFBP
TExJTiB8IFBPTExQUkk7CgkgICAgcnYgPSBwb2xsKHVmZHMsIDEsIDEwMDAw
KTsKCSAgICBpZiAocnYgPT0gLTEpIHsKCSAgICAgICAgcGVycm9yKCJwb2xs
Iik7IC8vIGVycm9yIG9jY3VycmVkIGluIHBvbGwoKQoJICAgIH0gZWxzZSBp
ZiAocnYgPT0gMCkgewoJICAgICAgICBwcmludGYoIlRpbWVvdXQgb2NjdXJy
ZWQhIE5vIGRhdGEgYWZ0ZXIgMTAgc2Vjb25kcy5cbiIpOwoJCQlwcmludGYo
IlRyeSB0byBzZW5kIGRhdGEgYWdhaW5cbiIpOwoJCQljb250aW51ZTsKCSAg
ICB9IGVsc2UgewoJCQlhZGRyX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW42KTsKCQkJaWYgKChudW1ieXRlcz1yZWN2ZnJvbShzb2NrZmQsIGJ1
ZiwgTUFYREFUQVNJWkUtMSAsIDAsKHN0cnVjdCBzb2NrYWRkciAqKSZ0aGVp
cl9hZGRyLCAmYWRkcl9sZW4pKSA9PSAtMSkgCgkJICAgIHsKCQkgICAgICAg
IHBlcnJvcigicmVjdmZyb20iKTsKCQkgICAgICAgIGV4aXQoMSk7CgkJICAg
IH1lbHNlIGJyZWFrOwoJCX0KCX0KICAgIGJ1ZltudW1ieXRlc10gPSAnXDAn
OwogICAgcHJpbnRmKCJSZWNlaXZlZDogJXNcbiIsYnVmKTsKICAgIHByaW50
ZigiXG4iKTsKICAgIGNsb3NlKHNvY2tmZCk7CiAgICByZXR1cm4gMDsKfQoA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AENsaWVudCBvbiBOZXRCU0QgYW5kIFNlcnZlciBvbiBhbm90aGVyIG1hY2hp
bmUvc2VydmVyNi5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAgICA3NzcgACAgICAgMCAAICAgICAwIAAgICAgICAgNzU2
MyAxMDczNDEyNzQ1NCAgMTYxMjYgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALyoKKiogc2VydmVyLmMgLS0gYSBzdHJlYW0g
c29ja2V0IHNlcnZlciBkZW1vCiovCiNpbmNsdWRlIDxzdGRpby5oPgojaW5j
bHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUg
PGVycm5vLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN5cy90
eXBlcy5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgojaW5jbHVkZSA8bmV0
aW5ldC9pbi5oPgojaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiNpbmNsdWRlIDxz
eXMvd2FpdC5oPgojaW5jbHVkZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxuZXQv
aWYuaD4KI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiNkZWZpbmUgTUFYQlVGTEVO
IDEwMAojZGVmaW5lIE1ZUE9SVCA0NTg3IC8vIHRoZSBwb3J0IHVzZXJzIHdp
bGwgYmUgY29ubmVjdGluZyB0bwojZGVmaW5lIEJBQ0tMT0cgMTAgLy8gaG93
IG1hbnkgcGVuZGluZyBjb25uZWN0aW9ucyBxdWV1ZSB3aWxsIGhvbGQKdm9p
ZCBzaWdjaGxkX2hhbmRsZXIoaW50IHMpCnsKICAgIHdoaWxlKHdhaXRwaWQo
LTEsIE5VTEwsIFdOT0hBTkcpID4gMCk7Cn0KaW50IG1haW4odm9pZCkKewog
ICAgaW50IHNvY2tmZCwgbmV3X2ZkOyAvLyBsaXN0ZW4gb24gc29ja19mZCwg
bmV3IGNvbm5lY3Rpb24gb24gbmV3X2ZkCiAgICBzdHJ1Y3Qgc29ja2FkZHJf
aW42IG15X2FkZHI7IC8vIG15IGFkZHJlc3MgaW5mb3JtYXRpb24KICAgIHN0
cnVjdCBzb2NrYWRkcl9pbjYgKm15X2FkZHJQID0gKHN0cnVjdCBzb2NrYWRk
cl9pbjYqKSZteV9hZGRyOwogICAgc3RydWN0IHNvY2thZGRyX2luNiB0aGVp
cl9hZGRyOyAvLyBjb25uZWN0b3KScyBhZGRyZXNzIGluZm9ybWF0aW9uCiAg
ICBzb2NrbGVuX3Qgc2luX3NpemU7CiAgICBjaGFyIGNhZGRyWzE2XTsKICAg
IGludCBpPTA7CiAgICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhOwogICAgaW50IHll
cz0xOwogICAgaW50IGxlbiA9IDI4OwoJaW50IHY2b25seT0wOwogICAgaW50
IGFkZHJfbGVuOwogICAgaW50IG51bWJ5dGVzID0gMDsKICAgIGNoYXIgYnVm
W01BWEJVRkxFTl07CiAgICBjaGFyIG11bHRpQWRkclsxNl07CiAgICBzdHJ1
Y3QgaXB2Nl9tcmVxIG1uYW1lNjsKICAgIGludCBpbmRleDsKICAgIGludCBs
ZW5faW5kZXggPSBzaXplb2YoaW5kZXgpOwogICAgc3RydWN0IHBvbGxmZCB1
ZmRzWzFdOwogICAgaW50IHJ2OwogICAgc3RydWN0IGluNl9hZGRyIG1hZGRy
ID0gSU42QUREUl9BTllfSU5JVDsKCWludCB2YWx1ZSA9IDE7CgogICAgaWYg
KChzb2NrZmQgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfREdSQU0sIDApKSA9
PSAtMSkgewogICAgICAgIHBlcnJvcigic29ja2V0Iik7CiAgICAgICAgZXhp
dCgxKTsKICAgIH0KCWlmIChzZXRzb2Nrb3B0KHNvY2tmZCwgSVBQUk9UT19J
UFY2LCBJUFY2X1Y2T05MWSwgJnY2b25seSwgc2l6ZW9mKGludCkpID09IC0x
KQoJCXBlcnJvcigiVjZPTkxZIik7CiAgICAKICAgIGlmIChzZXRzb2Nrb3B0
KHNvY2tmZCxTT0xfU09DS0VULFNPX1JFVVNFQUREUiwmeWVzLHNpemVvZihp
bnQpKSA9PSAtMSkgewogICAgICAgIHBlcnJvcigic2V0c29ja29wdCIpOwog
ICAgICAgIGV4aXQoMSk7CiAgICB9CiAgICBtZW1zZXQoJmNhZGRyLCAwLCAx
Nik7CiAgICBmb3IoaT0wOyBpPCAxNjsgaSsrKQogICAgICAgIGNhZGRyW2ld
ID0gMDsKCiAgICBteV9hZGRyUC0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsg
Ly8gaG9zdCBieXRlIG9yZGVyCiAgICBteV9hZGRyUC0+c2luNl9wb3J0ID0g
aHRvbnMoTVlQT1JUKTsgLy8gc2hvcnQsIG5ldHdvcmsgYnl0ZSBvcmRlcgog
ICAgbWVtY3B5KCh2b2lkICopJihteV9hZGRyUC0+c2luNl9hZGRyKSwgY2Fk
ZHIsIDE2ICk7CiAgICBpZiAoYmluZChzb2NrZmQsIChzdHJ1Y3Qgc29ja2Fk
ZHIgKikmbXlfYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSA9
PSAtMSkgewogICAgICAgIHBlcnJvcigiYmluZCIpOwogICAgICAgIGV4aXQo
MSk7CiAgICB9CgogICAgIC8vIkZGMTU6MDowOjA6MDowOjA6MTIzNCIgLS0g
IiAtMSAyMSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxOCA1MiIKICAgIGlu
ZXRfcHRvbihBRl9JTkVUNiwgIkZGMTU6MDowOjA6MDowOjA6MTIzNCIsICZt
YWRkcik7CiAgICBtZW1jcHkoKHZvaWQgKikmKG1uYW1lNi5pcHY2bXJfbXVs
dGlhZGRyKSwgbWFkZHIuczZfYWRkciwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRk
cikpOwogICAgaWYgKGdldHNvY2tvcHQoc29ja2ZkLCBJUFBST1RPX0lQVjYs
IElQVjZfTVVMVElDQVNUX0lGLCAoY2hhciopJmluZGV4LCAoc29ja2xlbl90
KikmbGVuX2luZGV4KSA8IDApIHsKICAgICAgICBwZXJyb3IoImdldHNvY2tv
cHQiKTsKICAgICAgICBleGl0KDEpOwogICAgfQoJCglwcmludGYoImN1cnJl
bnQgaW50ZXJmYWNlIG9mIHNlcnZlciBpcyAlZFxuIiwgaW5kZXgpOwogICAg
CiAgICBtbmFtZTYuaXB2Nm1yX2ludGVyZmFjZSA9IDE7Ly9pbmRleDsKICAg
IC8vSm9pbiB0aGUgbXVsdGljYXN0IGdyb3VwIAogICAgaWYgKHNldHNvY2tv
cHQoc29ja2ZkLCBJUFBST1RPX0lQVjYsIElQVjZfSk9JTl9HUk9VUCwgKGNo
YXIgKikgJm1uYW1lNiwgc2l6ZW9mIChtbmFtZTYpKSA8IDApIHsKICAgICAg
ICBwZXJyb3IoInNldHNvY2tvcHQxIik7CiAgICAgICAgZXhpdCgxKTsKICAg
IH0KCiAgICAKICAgIHNhLnNhX2hhbmRsZXIgPSBzaWdjaGxkX2hhbmRsZXI7
IC8vIHJlYXAgYWxsIGRlYWQgcHJvY2Vzc2VzCiAgICBzaWdlbXB0eXNldCgm
c2Euc2FfbWFzayk7CiAgICBzYS5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7CiAg
ICBpZiAoc2lnYWN0aW9uKFNJR0NITEQsICZzYSwgTlVMTCkgPT0gLTEpIHsK
ICAgICAgICBwZXJyb3IoInNpZ2FjdGlvbiIpOwogICAgICAgIGV4aXQoMSk7
CiAgICB9CiAgICBhZGRyX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
aW42KTsKICAgIHByaW50Zigic2VydmVyIGlzIHVwIGFuZCBqb2luIGdyb3Vw
IG11bHRpY2FzdCBhZGRyZXNzIG5vdyBhbmQgd2FpdGluZyBvbiBwb3J0ICVk
XG4iLCBNWVBPUlQpOwogICAgdWZkc1swXS5mZCA9IHNvY2tmZDsKICAgIHVm
ZHNbMF0uZXZlbnRzID0gUE9MTElOIHwgUE9MTFBSSTsKICAgIHJ2ID0gcG9s
bCh1ZmRzLCAxLCA2MDAwMCk7CiAgICBpZiAocnYgPT0gLTEpIHsKICAgICAg
ICBwZXJyb3IoInBvbGwiKTsgLy8gZXJyb3Igb2NjdXJyZWQgaW4gcG9sbCgp
CiAgICB9IGVsc2UgaWYgKHJ2ID09IDApIHsKICAgICAgICBwcmludGYoIlRp
bWVvdXQgb2NjdXJyZWQhIE5vIGRhdGEgYWZ0ZXIgNjAgc2Vjb25kcy5cbiIp
OwogICAgfSBlbHNlIHsKICAgICAgICAvLyBjaGVjayBmb3IgZXZlbnRzIG9u
IHMxOgogICAgICAgIGlmICh1ZmRzWzBdLnJldmVudHMgJiBQT0xMSU4pIHsK
ICAgICAgICAgICAgaWYgKChudW1ieXRlcz1yZWN2ZnJvbShzb2NrZmQsIGJ1
ZiwgTUFYQlVGTEVOLTEgLCAwLChzdHJ1Y3Qgc29ja2FkZHIgKikmdGhlaXJf
YWRkciwgJmFkZHJfbGVuKSkgPT0gLTEpIAogICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICBwZXJyb3IoInJlY3Zmcm9tIik7CiAgICAgICAgICAgICAg
ICBleGl0KDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQoJfQoJcHJpbnRm
KCJwYWNrZXQgaXMgJWQgYnl0ZXMgbG9uZ1xuIixudW1ieXRlcyk7CiAgICBp
ZiAobnVtYnl0ZXMgPiAwKXsKICAgICAgICBidWZbbnVtYnl0ZXNdID0gJ1ww
JzsKICAgICAgICBwcmludGYoInBhY2tldCBjb250YWlucyBcIiVzXCJcbiIs
YnVmKTsKICAgIH0KICAgIC8vc2VuZCByZWNlaXZlZCBkYXRhIHRvIGNsaWVu
dAogICAgaWYgKChudW1ieXRlcyA9IHNlbmR0byhzb2NrZmQsIGJ1Ziwgc3Ry
bGVuKGJ1ZiksIDAsIChzdHJ1Y3Qgc29ja2FkZHIgKikmdGhlaXJfYWRkciwg
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSkgPT0gLTEpIHsKCQlwZXJy
b3IoInNlbmR0byIpOwoJCWV4aXQoMSk7Cgl9CgoJY2xvc2Uoc29ja2ZkKTsK
CXJldHVybiAwOwp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAA=

--0-1361308450-1198659673=:65197--