[Verse-dev] new verse

Eskil Steenberg eskil@obsession.se
Tue, 02 Sep 2003 21:11:35 +0200


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

Yeah i plan to show up at the blender conf.

I talked to Ton and he wants me to give a few sessions. I haven't
decided what the sessions will be, but im thinking something in the
lines of "Verse 101 coding introduction", "How to program verse
applications" and "discussion of future blender applications using
verse".

I was thinking abut having some sort of advanced course, but don't know
what is so hard to use that it would be require and "advance" course.

Every thing is fine but a lot has happened.

Some of you know this already, but the EU have given 1.9 million euros
for a 3 year project on verse technology. There are many different
organizations involved and Blender is one of them. the project contains
a lot of cool development such as tools, alternative servers, sound
stuff, pda clients, and the next Gen blender.

The decision is final but the contract has not been signed, that's why
we can not make any official announcement, and that's why i ask you not
to spread it around. Once the contact is signed i hope to make a big
announcement with ton, get slashdoted and all. but for now we need to
wait. So all though all this is great it changes stuff. I am the main
verse man and if lots of people around europe are going to start using
verse im going to be in demand. and what happened when i wrote Loq and
other stuff is that too much time went in to that. So right now im
working to free some of my time. We are also working on getting some
more time. Although I am strongly committed to NGB i think we are going
going to put someone else on full time in charge of the project.

Other then that i got a mail from someone writing a plug-in for gimp ,
its a really cool project (i hope we can do the same with PhotoShop
soon) and he mailed me about some issues in the server. if found some
bugs and sent him a new version. I haven't got it verified that it all
works now but still im sending you an new updated file.

Cheers

E
--------------F6AA0ABD6D3CEFC99E3890CF
Content-Type: application/x-unknown-content-type-cfile;
 name="vs_node_bitmap.c"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="vs_node_bitmap.c"

I2luY2x1ZGUgInN0ZGxpYi5oIg0KI2luY2x1ZGUgInZlcnNlLmgiDQojaW5jbHVkZSAidnNf
c2VydmVyLmgiDQojaW5jbHVkZSAidl9jbWRfZ2VuLmgiDQoNCiNpZiAhZGVmaW5lZChWX0dF
TkVSQVRFX0ZVTkNfTU9ERSkNCg0KdHlwZWRlZiBzdHJ1Y3R7DQoJVk5CTGF5ZXJUeXBlIHR5
cGU7DQoJY2hhcgkJbmFtZVsxNl07DQoJdm9pZAkJKmxheWVyOw0KCVZTU3Vic2NyaXB0aW9u
TGlzdCAqc3Vic2NyaWJlcnM7DQp9VlNOQkxheWVyczsNCg0KdHlwZWRlZiBzdHJ1Y3R7DQoJ
VlNOb2RlSGVhZAloZWFkOw0KCXVpbnQxNgkJc2l6ZVszXTsNCglWU05CTGF5ZXJzCSpsYXll
cnM7DQoJdWludAkJbGF5ZXJfY291bnQ7DQp9VlNOb2RlQml0bWFwOw0KDQpWU05vZGVCaXRt
YXAgKnZzX2JfY3JlYXRlX25vZGUodWludCBvd25lcikNCnsNCglWU05vZGVCaXRtYXAgKm5v
ZGU7DQoJY2hhciBuYW1lWzQ4XTsNCglub2RlID0gbWFsbG9jKHNpemVvZiAqbm9kZSk7DQoJ
dnNfYWRkX25ld19ub2RlKCZub2RlLT5oZWFkLCBWX05UX0JJVE1BUCk7DQoJc3ByaW50Zihu
YW1lLCAiQml0bWFwX05vZGVfJXUiLCBub2RlLT5oZWFkLmlkKTsNCgljcmVhdGVfbm9kZV9o
ZWFkKCZub2RlLT5oZWFkLCBuYW1lLCBvd25lcik7DQoNCglub2RlLT5zaXplWzBdID0gMDsN
Cglub2RlLT5zaXplWzFdID0gMDsNCglub2RlLT5zaXplWzJdID0gMDsNCglub2RlLT5sYXll
cnMgPSBOVUxMOw0KCW5vZGUtPmxheWVyX2NvdW50ID0gMDsNCglyZXR1cm4gbm9kZTsNCn0N
Cg0Kdm9pZCB2c19iX2Rlc3Ryb3lfbm9kZShWU05vZGVCaXRtYXAgKm5vZGUpDQp7DQoJdWlu
dCBpOw0KCWRlc3Ryb3lfbm9kZV9oZWFkKCZub2RlLT5oZWFkKTsNCglpZihub2RlLT5sYXll
cnMgIT0gTlVMTCkNCgl7DQoJCWZvcihpID0gMDsgaSA8IG5vZGUtPmxheWVyX2NvdW50OyBp
KyspDQoJCQlpZihub2RlLT5sYXllcnNbaV0ubGF5ZXIgIT0gTlVMTCkNCgkJCQlmcmVlKG5v
ZGUtPmxheWVyc1tpXS5sYXllcik7DQoJCWZyZWUobm9kZS0+bGF5ZXJzKTsNCgl9DQoJZnJl
ZShub2RlKTsNCn0NCg0Kdm9pZCB2c19iX3N1YnNjcmliZShWU05vZGVCaXRtYXAgKm5vZGUp
DQp7DQoJdWludCBpOw0KCWlmKG5vZGUtPnNpemVbMF0gIT0gMCkNCgkJdmVyc2Vfc2VuZF9i
X2luaXRfZGltZW5zaW9ucyhub2RlLT5oZWFkLmlkLCBub2RlLT5zaXplWzBdLCBub2RlLT5z
aXplWzFdLCBub2RlLT5zaXplWzJdKTsNCglmb3IoaSA9IDA7IGkgPCBub2RlLT5sYXllcl9j
b3VudDsgaSsrKQ0KCQlpZihub2RlLT5sYXllcnNbaV0ubGF5ZXIgIT0gTlVMTCkNCgkJCXZl
cnNlX3NlbmRfYl9sYXllcl9jcmVhdGUobm9kZS0+aGVhZC5pZCwgKHVpbnQxNilpLCBub2Rl
LT5sYXllcnNbaV0ubmFtZSwgKHVpbnQ4KW5vZGUtPmxheWVyc1tpXS50eXBlKTsNCn0NCg0K
dm9pZCBjYWxsYmFja19zZW5kX2JfdW5zdWJzY3JpYmUodm9pZCAqdXNlciwgVk5vZGVJRCBu
b2RlX2lkKQ0Kew0KCVZTTm9kZUJpdG1hcCAqbm9kZTsNCglub2RlID0gKFZTTm9kZUJpdG1h
cCAqKXZzX2dldF9ub2RlKG5vZGVfaWQsIFZfTlRfQklUTUFQKTsNCglpZihub2RlID09IE5V
TEwpDQoJCXJldHVybjsNCgl2c19yZW1vdmVfc3Vic2NyaXB0b3Iobm9kZS0+aGVhZC5zdWJz
Y3JpYmVycyk7DQp9DQoNCg0Kdm9pZCBjYWxsYmFja19zZW5kX2JfaW5pdF9kaW1lbnNpb25z
KHZvaWQgKnVzZXIsIFZOb2RlSUQgbm9kZV9pZCwgdWludDE2IHdpZHRoLCB1aW50MTYgaGVp
Z2h0LCB1aW50MTYgZGVwdGgpDQp7DQoJVlNOb2RlQml0bWFwICpub2RlOw0KCXVpbnQgaSwg
Y291bnQ7DQoJaWYoKG5vZGUgPSAoVlNOb2RlQml0bWFwICopdnNfZ2V0X25vZGUobm9kZV9p
ZCwgVl9OVF9CSVRNQVApKSA9PSBOVUxMKQ0KCQlyZXR1cm47DQoJaWYobm9kZS0+c2l6ZVsw
XSAhPSAwIHx8IHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDAgfHwgZGVwdGggPT0gMCkNCgkJ
cmV0dXJuOw0KCW5vZGUtPnNpemVbMF0gPSB3aWR0aDsNCglub2RlLT5zaXplWzFdID0gaGVp
Z2h0Ow0KCW5vZGUtPnNpemVbMl0gPSBkZXB0aDsNCgljb3VudCA9CXZzX2dldF9zdWJzY3Jp
cHRfY291bnQobm9kZS0+aGVhZC5zdWJzY3JpYmVycyk7DQoJZm9yKGkgPSAwOyBpIDwgY291
bnQ7IGkrKykNCgl7DQoJCXZzX3NldF9zdWJzY3JpcHRfc2Vzc2lvbihub2RlLT5oZWFkLnN1
YnNjcmliZXJzLCBpKTsNCgkJdmVyc2Vfc2VuZF9iX2luaXRfZGltZW5zaW9ucyhub2RlX2lk
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7DQoJfQ0KCXZzX3Jlc2V0X3N1YnNjcmlwdF9zZXNz
aW9uKCk7DQp9DQoNCnZvaWQgY2FsbGJhY2tfc2VuZF9iX2xheWVyX2NyZWF0ZSh2b2lkICp1
c2VyLCBWTm9kZUlEIG5vZGVfaWQsIFZMYXllcklEIGxheWVyX2lkLCBjaGFyICpuYW1lLCB1
aW50OCB0eXBlKQ0Kew0KCVZTTm9kZUJpdG1hcCAqbm9kZTsNCgl1aW50IGksIGNvdW50Ow0K
CWlmKChub2RlID0gKFZTTm9kZUJpdG1hcCAqKXZzX2dldF9ub2RlKG5vZGVfaWQsIFZfTlRf
QklUTUFQKSkgPT0gTlVMTCkNCgkJcmV0dXJuOw0KCWlmKG5vZGUtPnNpemVbMF0gPT0gMCkN
CgkJcmV0dXJuOw0KCWZvcihsYXllcl9pZCA9IDA7IGxheWVyX2lkIDwgbm9kZS0+bGF5ZXJf
Y291bnQgJiYgbm9kZS0+bGF5ZXJzW2xheWVyX2lkXS5sYXllciAhPSBOVUxMOyBsYXllcl9p
ZCsrKTsNCglpZihsYXllcl9pZCA9PSBub2RlLT5sYXllcl9jb3VudCkNCgl7DQoJCW5vZGUt
PmxheWVycyA9IHJlYWxsb2Mobm9kZS0+bGF5ZXJzLCAoc2l6ZW9mICpub2RlLT5sYXllcnMp
ICogKG5vZGUtPmxheWVyX2NvdW50ICsgMTYpKTsNCgkJZm9yKGkgPSBub2RlLT5sYXllcl9j
b3VudDsgaSA8IG5vZGUtPmxheWVyX2NvdW50ICsgMTY7IGkrKykNCgkJew0KCQkJbm9kZS0+
bGF5ZXJzW2ldLmxheWVyID0gTlVMTDsNCgkJCW5vZGUtPmxheWVyc1tpXS50eXBlID0gMDsN
CgkJCW5vZGUtPmxheWVyc1tpXS5uYW1lWzBdID0gMDsNCgkJCW5vZGUtPmxheWVyc1tpXS5z
dWJzY3JpYmVycyA9IE5VTEw7DQoJCX0NCgkJbm9kZS0+bGF5ZXJfY291bnQgKz0gMTY7DQoJ
fQ0KCW5vZGUtPmxheWVyc1tsYXllcl9pZF0uc3Vic2NyaWJlcnMgPSB2c19jcmVhdGVfc3Vi
c2NyaXB0aW9uX2xpc3QoKTsNCglmb3IoaSA9IDA7IGkgPCAxNjsgaSsrKQ0KCQlub2RlLT5s
YXllcnNbbGF5ZXJfaWRdLm5hbWVbaV0gPSBuYW1lW2ldOw0KCW5vZGUtPmxheWVyc1tsYXll
cl9pZF0udHlwZSA9IHR5cGU7DQoJbm9kZS0+bGF5ZXJzW2xheWVyX2lkXS5sYXllciA9IE5V
TEw7DQoNCgljb3VudCA9CXZzX2dldF9zdWJzY3JpcHRfY291bnQobm9kZS0+aGVhZC5zdWJz
Y3JpYmVycyk7DQoJZm9yKGkgPSAwOyBpIDwgY291bnQ7IGkrKykNCgl7DQoJCXZzX3NldF9z
dWJzY3JpcHRfc2Vzc2lvbihub2RlLT5oZWFkLnN1YnNjcmliZXJzLCBpKTsNCgkJdmVyc2Vf
c2VuZF9iX2xheWVyX2NyZWF0ZShub2RlX2lkLCBsYXllcl9pZCwgbmFtZSwgdHlwZSk7DQoJ
fQ0KCXZzX3Jlc2V0X3N1YnNjcmlwdF9zZXNzaW9uKCk7DQp9DQoNCg0Kdm9pZCBjYWxsYmFj
a19zZW5kX2JfbGF5ZXJfZGVzdHJveSh2b2lkICp1c2VyLCBWTm9kZUlEIG5vZGVfaWQsIFZM
YXllcklEIGxheWVyX2lkKQ0Kew0KCVZTTm9kZUJpdG1hcCAqbm9kZTsNCgl1aW50IGksIGNv
dW50Ow0KCWlmKChub2RlID0gKFZTTm9kZUJpdG1hcCAqKXZzX2dldF9ub2RlKG5vZGVfaWQs
IFZfTlRfQklUTUFQKSkgPT0gTlVMTCkNCgkJcmV0dXJuOw0KDQoJaWYobGF5ZXJfaWQgPj0g
bm9kZS0+bGF5ZXJfY291bnQgfHwgbm9kZS0+bGF5ZXJzW2xheWVyX2lkXS5sYXllciA9PSBO
VUxMKQ0KCQlyZXR1cm47DQoJZnJlZShub2RlLT5sYXllcnNbbGF5ZXJfaWRdLmxheWVyKTsN
Cglub2RlLT5sYXllcnNbbGF5ZXJfaWRdLmxheWVyID0gTlVMTDsNCglub2RlLT5sYXllcnNb
bGF5ZXJfaWRdLnR5cGUgPSAwOw0KCW5vZGUtPmxheWVyc1tsYXllcl9pZF0ubmFtZVswXSA9
IDA7DQoJdnNfZGVzdG9yeV9zdWJzY3JpcHRpb25fbGlzdChub2RlLT5sYXllcnNbbGF5ZXJf
aWRdLnN1YnNjcmliZXJzKTsNCglub2RlLT5sYXllcnNbbGF5ZXJfaWRdLnN1YnNjcmliZXJz
ID0gTlVMTDsNCg0KCWNvdW50ID0JdnNfZ2V0X3N1YnNjcmlwdF9jb3VudChub2RlLT5oZWFk
LnN1YnNjcmliZXJzKTsNCglmb3IoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQ0KCXsNCgkJdnNf
c2V0X3N1YnNjcmlwdF9zZXNzaW9uKG5vZGUtPmhlYWQuc3Vic2NyaWJlcnMsIGkpOw0KCQl2
ZXJzZV9zZW5kX2JfbGF5ZXJfZGVzdHJveShub2RlX2lkLCBsYXllcl9pZCk7DQoJfQ0KCXZz
X3Jlc2V0X3N1YnNjcmlwdF9zZXNzaW9uKCk7DQp9DQoNCnZvaWQgY2FsbGJhY2tfc2VuZF9i
X2xheWVyX3N1YnNjcmliZSh2b2lkICp1c2VyLCBWTm9kZUlEIG5vZGVfaWQsIFZMYXllcklE
IGxheWVyX2lkLCB1aW50OCBsZXZlbCkNCnsNCglWU05vZGVCaXRtYXAgKm5vZGU7DQoJdWlu
dCBpLCBqLCBrLCB0aWxlWzNdOw0KCWlmKChub2RlID0gKFZTTm9kZUJpdG1hcCAqKXZzX2dl
dF9ub2RlKG5vZGVfaWQsIFZfTlRfQklUTUFQKSkgPT0gTlVMTCkNCgkJcmV0dXJuOw0KCWlm
KGxheWVyX2lkID49IG5vZGUtPmxheWVyX2NvdW50IHx8IG5vZGUtPmxheWVyc1tsYXllcl9p
ZF0ubGF5ZXIgPT0gTlVMTCkNCgkJcmV0dXJuOw0KCXRpbGVbMF0gPSAoKG5vZGUtPnNpemVb
MF0gKyBWTl9CX1RJTEVfU0laRSAtIDEpIC8gVk5fQl9USUxFX1NJWkUpOw0KCXRpbGVbMV0g
PSAoKG5vZGUtPnNpemVbMV0gKyBWTl9CX1RJTEVfU0laRSAtIDEpIC8gVk5fQl9USUxFX1NJ
WkUpOw0KCXRpbGVbMl0gPSBub2RlLT5zaXplWzJdOw0KCXN3aXRjaChub2RlLT5sYXllcnNb
bGF5ZXJfaWRdLnR5cGUpDQoJew0KCQljYXNlIFZOX0JfTEFZRVJfSU5URUdFUjEgOgkNCgkJ
CWZvcihpID0gMDsgaSA8IHRpbGVbMF07IGkrKykNCgkJCQlmb3IoaiA9IDA7IGogPCB0aWxl
WzFdOyBqKyspDQoJCQkJCWZvcihrID0gMDsgayA8IHRpbGVbMl07IGsrKykNCgkJCQkJCXZl
cnNlX3NlbmRfYl9sYXllcl9zZXRfdGlsZShub2RlX2lkLCBsYXllcl9pZCwgKHVpbnQxNilp
LCAodWludDE2KWosICh1aW50MTYpaywgVk5fQl9MQVlFUl9JTlRFR0VSMSwgJigodWludDgg
Kilub2RlLT5sYXllcnNbbGF5ZXJfaWRdLmxheWVyKVsoayArIGogKiB0aWxlWzBdICsgaSAq
IHRpbGVbMF0gKiB0aWxlWzFdKSAqIFZOX0JfVElMRV9TSVpFICogVk5fQl9USUxFX1NJWkUg
LyA4XSk7DQoJCWJyZWFrOw0KCQljYXNlIFZOX0JfTEFZRVJfSU5URUdFUjggOg0KCQkJZm9y
KGkgPSAwOyBpIDwgdGlsZVswXTsgaSsrKQ0KCQkJCWZvcihqID0gMDsgaiA8IHRpbGVbMV07
IGorKykNCgkJCQkJZm9yKGsgPSAwOyBrIDwgdGlsZVsyXTsgaysrKQ0KCQkJCQkJdmVyc2Vf
c2VuZF9iX2xheWVyX3NldF90aWxlKG5vZGVfaWQsIGxheWVyX2lkLCAodWludDE2KWksICh1
aW50MTYpaiwgKHVpbnQxNilrLCBWTl9CX0xBWUVSX0lOVEVHRVI4LCAmKCh1aW50OCAqKW5v
ZGUtPmxheWVyc1tsYXllcl9pZF0ubGF5ZXIpWyhrICsgaiAqIHRpbGVbMF0gKyBpICogdGls
ZVswXSAqIHRpbGVbMV0pICogVk5fQl9USUxFX1NJWkUgKiBWTl9CX1RJTEVfU0laRV0pOw0K
CQlicmVhazsNCgkJY2FzZSBWTl9CX0xBWUVSX0lOVEVHRVIxNiA6DQoJCQlmb3IoaSA9IDA7
IGkgPCB0aWxlWzBdOyBpKyspDQoJCQkJZm9yKGogPSAwOyBqIDwgdGlsZVsxXTsgaisrKQ0K
CQkJCQlmb3IoayA9IDA7IGsgPCB0aWxlWzJdOyBrKyspDQoJCQkJCQl2ZXJzZV9zZW5kX2Jf
bGF5ZXJfc2V0X3RpbGUobm9kZV9pZCwgbGF5ZXJfaWQsICh1aW50MTYpaSwgKHVpbnQxNilq
LCAodWludDE2KWssIFZOX0JfTEFZRVJfSU5URUdFUjE2LCAmKCh1aW50MTYgKilub2RlLT5s
YXllcnNbbGF5ZXJfaWRdLmxheWVyKVsoayArIGogKiB0aWxlWzBdICsgaSAqIHRpbGVbMF0g
KiB0aWxlWzFdKSAqIFZOX0JfVElMRV9TSVpFICogVk5fQl9USUxFX1NJWkUgKiAyXSk7DQoJ
CWJyZWFrOw0KCQljYXNlIFZOX0JfTEFZRVJfUkVBTDMyIDoNCgkJCWZvcihpID0gMDsgaSA8
IHRpbGVbMF07IGkrKykNCgkJCQlmb3IoaiA9IDA7IGogPCB0aWxlWzFdOyBqKyspDQoJCQkJ
CWZvcihrID0gMDsgayA8IHRpbGVbMl07IGsrKykNCgkJCQkJCXZlcnNlX3NlbmRfYl9sYXll
cl9zZXRfdGlsZShub2RlX2lkLCBsYXllcl9pZCwgKHVpbnQxNilpLCAodWludDE2KWosICh1
aW50MTYpaywgVk5fQl9MQVlFUl9SRUFMMzIsICYoKGZsb2F0ICopbm9kZS0+bGF5ZXJzW2xh
eWVyX2lkXS5sYXllcilbKGsgKyBqICogdGlsZVswXSArIGkgKiB0aWxlWzBdICogdGlsZVsx
XSkgKiBWTl9CX1RJTEVfU0laRSAqIFZOX0JfVElMRV9TSVpFICogNF0pOw0KCQlicmVhazsN
CgkJY2FzZSBWTl9CX0xBWUVSX1JFQUw2NCA6DQoJCQlmb3IoaSA9IDA7IGkgPCB0aWxlWzBd
OyBpKyspDQoJCQkJZm9yKGogPSAwOyBqIDwgdGlsZVsxXTsgaisrKQ0KCQkJCQlmb3IoayA9
IDA7IGsgPCB0aWxlWzJdOyBrKyspDQoJCQkJCQl2ZXJzZV9zZW5kX2JfbGF5ZXJfc2V0X3Rp
bGUobm9kZV9pZCwgbGF5ZXJfaWQsICh1aW50MTYpaSwgKHVpbnQxNilqLCAodWludDE2KWss
IFZOX0JfTEFZRVJfUkVBTDY0LCAmKChkb3VibGUgKilub2RlLT5sYXllcnNbbGF5ZXJfaWRd
LmxheWVyKVsoayArIGogKiB0aWxlWzBdICsgaSAqIHRpbGVbMF0gKiB0aWxlWzFdKSAqIFZO
X0JfVElMRV9TSVpFICogVk5fQl9USUxFX1NJWkUgKiA4XSk7DQoJCWJyZWFrOw0KCX0NCn0N
Cg0Kdm9pZCBjYWxsYmFja19zZW5kX2JfbGF5ZXJfdW5zdWJzY3JpYmUodm9pZCAqdXNlciwg
Vk5vZGVJRCBub2RlX2lkLCBWTGF5ZXJJRCBsYXllcl9pZCkNCnsNCglWU05vZGVCaXRtYXAg
Km5vZGU7DQoJaWYoKG5vZGUgPSAoVlNOb2RlQml0bWFwICopdnNfZ2V0X25vZGUobm9kZV9p
ZCwgVl9OVF9CSVRNQVApKSA9PSBOVUxMKQ0KCQlyZXR1cm47DQoJaWYobGF5ZXJfaWQgPj0g
bm9kZS0+bGF5ZXJfY291bnQgfHwgbm9kZS0+bGF5ZXJzW2xheWVyX2lkXS5sYXllciA9PSBO
VUxMKQ0KCQlyZXR1cm47DQoJdnNfcmVtb3ZlX3N1YnNjcmlwdG9yKG5vZGUtPmxheWVyc1ts
YXllcl9pZF0uc3Vic2NyaWJlcnMpOw0KfQ0KDQp2b2lkIGNhbGxiYWNrX3NlbmRfYl9sYXll
cl9zZXRfdGlsZSh2b2lkICp1c2VyLCBWTm9kZUlEIG5vZGVfaWQsIFZMYXllcklEIGxheWVy
X2lkLCB1aW50MTYgdGlsZV94LCB1aW50MTYgdGlsZV95LCB1aW50MTYgdGlsZV96LCB1aW50
OCB0eXBlLCB2b2lkICpkYXRhKQ0Kew0KCVZTTm9kZUJpdG1hcCAqbm9kZTsNCgl1aW50IGks
IGNvdW50LCB0aWxlWzNdOw0KCWlmKChub2RlID0gKFZTTm9kZUJpdG1hcCAqKXZzX2dldF9u
b2RlKG5vZGVfaWQsIFZfTlRfQklUTUFQKSkgPT0gTlVMTCkNCgkJcmV0dXJuOw0KCWlmKGxh
eWVyX2lkID49IG5vZGUtPmxheWVyX2NvdW50IHx8IG5vZGUtPmxheWVyc1tsYXllcl9pZF0u
dHlwZSAhPSB0eXBlIHx8IG5vZGUtPnNpemVbMF0gPT0gMCkNCgkJcmV0dXJuOw0KCWlmKHRp
bGVfeCA+PSAoKG5vZGUtPnNpemVbMF0gKyBWTl9CX1RJTEVfU0laRSAtIDEpIC8gVk5fQl9U
SUxFX1NJWkUpIHx8IHRpbGVfeSA+PSAoKG5vZGUtPnNpemVbMV0gKyBWTl9CX1RJTEVfU0la
RSAtIDEpIC8gVk5fQl9USUxFX1NJWkUpIHx8IHRpbGVfeiA+PSBub2RlLT5zaXplWzJdKQ0K
CQlyZXR1cm47DQoJdGlsZVswXSA9ICgobm9kZS0+c2l6ZVswXSArIFZOX0JfVElMRV9TSVpF
IC0gMSkgLyBWTl9CX1RJTEVfU0laRSk7DQoJdGlsZVsxXSA9ICgobm9kZS0+c2l6ZVsxXSAr
IFZOX0JfVElMRV9TSVpFIC0gMSkgLyBWTl9CX1RJTEVfU0laRSk7DQoJdGlsZVsyXSA9IG5v
ZGUtPnNpemVbMl07DQoJaWYobm9kZS0+bGF5ZXJzW2xheWVyX2lkXS5sYXllciA9PSBOVUxM
KQ0KCXsNCgkJY291bnQgPSAoKG5vZGUtPnNpemVbMF0gKyBWTl9CX1RJTEVfU0laRSAtIDEp
IC8gVk5fQl9USUxFX1NJWkUpICogKChub2RlLT5zaXplWzFdICsgVk5fQl9USUxFX1NJWkUg
LSAxKSAvIFZOX0JfVElMRV9TSVpFKTsNCgkJY291bnQgKj0gVk5fQl9USUxFX1NJWkUgKiBW
Tl9CX1RJTEVfU0laRSAqIG5vZGUtPnNpemVbMl07DQoJCXN3aXRjaCh0eXBlKQ0KCQl7DQoJ
CWNhc2UgVk5fQl9MQVlFUl9JTlRFR0VSMSA6DQoJCQlub2RlLT5sYXllcnNbbGF5ZXJfaWRd
LmxheWVyID0gbWFsbG9jKHNpemVvZih1aW50OCkgKiBjb3VudCAvIDgpOw0KCQkJZm9yKGkg
PSAwOyBpIDwgY291bnQgLyA4OyBpKyspDQoJCQkJKCh1aW50OCAqKW5vZGUtPmxheWVyc1ts
YXllcl9pZF0ubGF5ZXIpW2ldID0gMDsNCgkJYnJlYWs7DQoJCWNhc2UgVk5fQl9MQVlFUl9J
TlRFR0VSOCA6DQoJCQlub2RlLT5sYXllcnNbbGF5ZXJfaWRdLmxheWVyID0gbWFsbG9jKHNp
emVvZih1aW50OCkgKiBjb3VudCk7DQoJCQlmb3IoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQ0K
CQkJCSgodWludDggKilub2RlLT5sYXllcnNbbGF5ZXJfaWRdLmxheWVyKVtpXSA9IDA7DQoJ
CWJyZWFrOw0KCQljYXNlIFZOX0JfTEFZRVJfSU5URUdFUjE2IDoNCgkJCW5vZGUtPmxheWVy
c1tsYXllcl9pZF0ubGF5ZXIgPSBtYWxsb2Moc2l6ZW9mKHVpbnQxNikgKiBjb3VudCk7DQoJ
CQlmb3IoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQ0KCQkJCSgodWludDE2ICopbm9kZS0+bGF5
ZXJzW2xheWVyX2lkXS5sYXllcilbaV0gPSAwOw0KCQlicmVhazsNCgkJY2FzZSBWTl9CX0xB
WUVSX1JFQUwzMiA6DQoJCQlub2RlLT5sYXllcnNbbGF5ZXJfaWRdLmxheWVyID0gbWFsbG9j
KHNpemVvZihmbG9hdCkgKiBjb3VudCk7DQoJCQlmb3IoaSA9IDA7IGkgPCBjb3VudDsgaSsr
KQ0KCQkJCSgoZmxvYXQgKilub2RlLT5sYXllcnNbbGF5ZXJfaWRdLmxheWVyKVtpXSA9IDA7
DQoJCWJyZWFrOw0KCQljYXNlIFZOX0JfTEFZRVJfUkVBTDY0IDoNCgkJCW5vZGUtPmxheWVy
c1tsYXllcl9pZF0ubGF5ZXIgPSBtYWxsb2Moc2l6ZW9mKGRvdWJsZSkgKiBjb3VudCk7DQoJ
CQlmb3IoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQ0KCQkJCSgoZG91YmxlICopbm9kZS0+bGF5
ZXJzW2xheWVyX2lkXS5sYXllcilbaV0gPSAwLjA7DQoJCWJyZWFrOw0KCQl9DQoJfQ0KCXN3
aXRjaChub2RlLT5sYXllcnNbbGF5ZXJfaWRdLnR5cGUpDQoJew0KCQljYXNlIFZOX0JfTEFZ
RVJfSU5URUdFUjEgOg0KCQl7DQoJCQl1aW50OCAqcDsNCgkJCXAgPSAmKCh1aW50OCAqKW5v
ZGUtPmxheWVyc1tsYXllcl9pZF0ubGF5ZXIpWyh0aWxlX3ogKyB0aWxlX3kgKiB0aWxlWzBd
ICsgdGlsZV94ICogdGlsZVswXSAqIHRpbGVbMV0pICogVk5fQl9USUxFX1NJWkUgKiBWTl9C
X1RJTEVfU0laRSAvIDhdOw0KCQkJZm9yKGkgPSAwOyBpIDwgVk5fQl9USUxFX1NJWkUgKiBW
Tl9CX1RJTEVfU0laRSAvIDg7IGkrKykNCgkJCQlwW2ldID0gKCh1aW50OCAqKWRhdGEpW2ld
Ow0KCQl9DQoJCWJyZWFrOw0KCQljYXNlIFZOX0JfTEFZRVJfSU5URUdFUjggOg0KCQl7DQoJ
CQl1aW50OCAqcDsNCgkJCXAgPSAmKCh1aW50OCAqKW5vZGUtPmxheWVyc1tsYXllcl9pZF0u
bGF5ZXIpWyh0aWxlX3ogKyB0aWxlX3kgKiB0aWxlWzBdICsgdGlsZV94ICogdGlsZVswXSAq
IHRpbGVbMV0pICogVk5fQl9USUxFX1NJWkUgKiBWTl9CX1RJTEVfU0laRV07DQoJCQlmb3Io
aSA9IDA7IGkgPCBWTl9CX1RJTEVfU0laRSAqIFZOX0JfVElMRV9TSVpFOyBpKyspDQoJCQkJ
cFtpXSA9ICgodWludDggKilkYXRhKVtpXTsNCgkJfQ0KCQlicmVhazsNCgkJY2FzZSBWTl9C
X0xBWUVSX0lOVEVHRVIxNiA6DQoJCXsNCgkJCXVpbnQxNiAqcDsNCgkJCXAgPSAmKCh1aW50
MTYgKilub2RlLT5sYXllcnNbbGF5ZXJfaWRdLmxheWVyKVsodGlsZV96ICsgdGlsZV95ICog
dGlsZVswXSArIHRpbGVfeCAqIHRpbGVbMF0gKiB0aWxlWzFdKSAqIFZOX0JfVElMRV9TSVpF
ICogVk5fQl9USUxFX1NJWkUgKiAyXTsNCgkJCWZvcihpID0gMDsgaSA8IFZOX0JfVElMRV9T
SVpFICogVk5fQl9USUxFX1NJWkU7IGkrKykNCgkJCQlwW2ldID0gKCh1aW50MTYgKilkYXRh
KVtpXTsNCgkJfQ0KCQlicmVhazsNCgkJY2FzZSBWTl9CX0xBWUVSX1JFQUwzMiA6DQoJCXsN
CgkJCWZsb2F0ICpwOw0KCQkJcCA9ICYoKGZsb2F0ICopbm9kZS0+bGF5ZXJzW2xheWVyX2lk
XS5sYXllcilbKHRpbGVfeiArIHRpbGVfeSAqIHRpbGVbMF0gKyB0aWxlX3ggKiB0aWxlWzBd
ICogdGlsZVsxXSkgKiBWTl9CX1RJTEVfU0laRSAqIFZOX0JfVElMRV9TSVpFICogNF07DQoJ
CQlmb3IoaSA9IDA7IGkgPCBWTl9CX1RJTEVfU0laRSAqIFZOX0JfVElMRV9TSVpFOyBpKysp
DQoJCQkJcFtpXSA9ICgoZmxvYXQgKilkYXRhKVtpXTsNCgkJfQ0KCQlicmVhazsNCgkJY2Fz
ZSBWTl9CX0xBWUVSX1JFQUw2NCA6DQoJCXsNCgkJCWRvdWJsZSAqcDsNCgkJCXAgPSAmKChk
b3VibGUgKilub2RlLT5sYXllcnNbbGF5ZXJfaWRdLmxheWVyKVsodGlsZV96ICsgdGlsZV95
ICogdGlsZVswXSArIHRpbGVfeCAqIHRpbGVbMF0gKiB0aWxlWzFdKSArIFZOX0JfVElMRV9T
SVpFICogVk5fQl9USUxFX1NJWkUgKiA4XTsNCgkJCWZvcihpID0gMDsgaSA8IFZOX0JfVElM
RV9TSVpFICogVk5fQl9USUxFX1NJWkU7IGkrKykNCgkJCQlwW2ldID0gKChkb3VibGUgKilk
YXRhKVtpXTsNCgkJfQ0KCQlicmVhazsNCgl9DQoJY291bnQgPQl2c19nZXRfc3Vic2NyaXB0
X2NvdW50KG5vZGUtPmhlYWQuc3Vic2NyaWJlcnMpOw0KCWZvcihpID0gMDsgaSA8IGNvdW50
OyBpKyspDQoJew0KCQl2c19zZXRfc3Vic2NyaXB0X3Nlc3Npb24obm9kZS0+aGVhZC5zdWJz
Y3JpYmVycywgaSk7DQoJCXZlcnNlX3NlbmRfYl9sYXllcl9zZXRfdGlsZShub2RlX2lkLCBs
YXllcl9pZCwgdGlsZV94LCB0aWxlX3ksIHRpbGVfeiwgdHlwZSwgZGF0YSk7DQoJfQ0KCXZz
X3Jlc2V0X3N1YnNjcmlwdF9zZXNzaW9uKCk7DQp9DQoNCnZvaWQgdnNfYl9jYWxsYmFja19p
bml0KCkNCnsNCgl2ZXJzZV9jYWxsYmFja19zZXQodmVyc2Vfc2VuZF9iX2luaXRfZGltZW5z
aW9ucywgY2FsbGJhY2tfc2VuZF9iX2luaXRfZGltZW5zaW9ucywgTlVMTCk7DQoJdmVyc2Vf
Y2FsbGJhY2tfc2V0KHZlcnNlX3NlbmRfYl9sYXllcl9jcmVhdGUsIGNhbGxiYWNrX3NlbmRf
Yl9sYXllcl9jcmVhdGUsIE5VTEwpOw0KCXZlcnNlX2NhbGxiYWNrX3NldCh2ZXJzZV9zZW5k
X2JfbGF5ZXJfZGVzdHJveSwgY2FsbGJhY2tfc2VuZF9iX2xheWVyX2Rlc3Ryb3ksIE5VTEwp
Ow0KCXZlcnNlX2NhbGxiYWNrX3NldCh2ZXJzZV9zZW5kX2JfbGF5ZXJfc3Vic2NyaWJlLCBj
YWxsYmFja19zZW5kX2JfbGF5ZXJfc3Vic2NyaWJlLCBOVUxMKTsNCgl2ZXJzZV9jYWxsYmFj
a19zZXQodmVyc2Vfc2VuZF9iX2xheWVyX3Vuc3Vic2NyaWJlLCBjYWxsYmFja19zZW5kX2Jf
bGF5ZXJfdW5zdWJzY3JpYmUsIE5VTEwpOw0KCXZlcnNlX2NhbGxiYWNrX3NldCh2ZXJzZV9z
ZW5kX2JfbGF5ZXJfc2V0X3RpbGUsIGNhbGxiYWNrX3NlbmRfYl9sYXllcl9zZXRfdGlsZSwg
TlVMTCk7DQp9DQoNCg0KI2VuZGlmDQoNCg==

--------------F6AA0ABD6D3CEFC99E3890CF--