Re: XForms: KeyPress problems

Miguel Monteiro de Sousa Frade (mfrade@ener1000.dee.uc.pt)
Fri, 24 Apr 1998 11:21:42 +0100 (WEST)

# To subscribers of the xforms list from Miguel Monteiro de Sousa Frade <mfrade@ener1000.dee.uc.pt> :

This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--0-1218875433-893413302=:24795
Content-Type: TEXT/PLAIN; charset=US-ASCII


> Where is the example? Is it in the XForms demos? It certainly looks
> wrong to me.

The example was gentile give by Robert S. Mallozzi
<Robert.Mallozzi@msfc.nasa.gov> and it may not be correct, but it
works (it actually detects the correct key). I'm sending the program in
the attachment (below.c) in case you want to take a look. Any way I'll try
your code.

>
> Here's an excerpt from code I use:
>
> #define CTRL(a) ( a - '@' )
>
> static int key_press_event_handler( FL_OBJECT *obj, Window window,
> int window_width, int window_height,
> XEvent *xevent, void *user_data )
>
> {
>
> XKeyEvent *xkey_press = ( XKeyEvent *) xevent;
> char buffer[80]; /* much overkill */
> KeySym keysym;
> XComposeStatus compose_status;
> int l;
>
> l = XLookupString( xkey_press, buffer, sizeof( buffer ),
> &keysym, &compose_status );
>
> if ( l == 1 ) {
>
> [...]
>
> switch ( buffer[0] ) {
>
> case CTRL('C'): {
>
> [...]
>
>

--0-1218875433-893413302=:24795
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="below.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.96.980424112142.24795B@ener1000.dee.uc.pt>
Content-Description:

LyoNCkJlbG93IGlzIGEgZnVsbCBleGFtcGxlIG9mIHVzaW5nIEdMIGFuZCBY
Zm9ybXMgdGhhdCBJIGRpZCBmb3INCmEgY29tcHV0ZXIgZ3JhcGhpY3MgY2xh
c3MgcHJvamVjdC4gIEl0IHVzZXMgY2FudmFzIGhhbmRsZXJzIGZvcg0KZXhw
b3NlIChhbmQgcmVzaXplKSwgYnV0dG9ucHJlc3MsIGFuZCBrZXlib2FyZCBl
dmVudHMuICBEb24ndA0KZm9yZ2V0IHRvIGNvbXBpbGUgaW4gZ2wuYyB0aGF0
IGNvbWVzIHdpdGggWGZvcm1zLg0KDQotYm9iDQoqLw0KDQoNCi8qIA0KKiog
Q1MgNjQ1CUZhbGwsIDE5OTcNCioqIFByb2plY3QgMglIaWVyYXJjaGljYWwg
TW9kZWxpbmcNCioqDQoqKiBSb2JlcnQgUy4gTWFsbG96emkgDQoqKiA8Um9i
ZXJ0Lk1hbGxvenppQG1zZmMubmFzYS5nb3Y+DQoqKiAxOTk3IE9jdG9iZXIN
CioqDQoqKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAg
KiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKiAgKg0KKioN
CioqIFRoaXMgcHJvZ3JhbSBidWlsZHMgYSBoaWVyYXJjaGljYWwgbW9kZWwg
dXNpbmcgT3BlbkdMIGRpc3BsYXkgbGlzdHMsIGFuZA0KKiogaW1wbGVtZW50
cyBzaW1wbGUgYW5pbWF0aW9uIG9mIHRoZSBtb2RlbCBhYm91dCB0aGUgeCx5
LHogV09STEQgY29vcmRpbmF0ZSANCioqIHN5c3RlbS4gIE9iamVjdCByb3Rh
dGlvbnMgYXJlIHBlcmZvcm1lZCBhYm91dCB0aGUgb2JqZWN0IGNlbnRyb2lk
Lg0KKiogVGhlIHZpZXdwb2ludCBpcyBmaXhlZCwgYW5kIHRoZSBwcm9qZWN0
aW9uIHJlZmVyZW5jZSBwb2ludCBpcyBsb2NhdGVkDQoqKiBhdCAoNzUsIDE1
MCwgMTUwKS4gIFRoZSBwcm9qZWN0aW9uIGlzIHBhcmFsbGVsIHdpdGggdGhl
IHByb2plY3Rpb24gcGxhbmUgYXQNCioqIHogPSAwLCBhbmQgYW4gaW5maW5p
dGUgdmlldyB2b2x1bWUgaXMgc2ltdWxhdGVkLiAgVGhlIGRlZmF1bHQgcmVu
ZGVyIG1vZGUgDQoqKiBpcyBzaGFkZWQsIHdpdGggbGlnaHRpbmcgZW5hYmxl
ZC4gIFRoZXNlIG9wdGlvbnMgY2FuIGJlIGNoYW5nZWQgb24gdGhlIA0KKiog
dXNlciBpbnRlcmZhY2UuICBUaGUgdXNlciBpbnRlcmZhY2UgaXMgaW1wbGVt
ZW50ZWQgdXNpbmcgdGhlIHhmb3JtcyBsaWJyYXJ5Lg0KKiogU2VlIGh0dHA6
Ly9icmFnZy5waHlzLnV3bS5lZHUveGZvcm1zIGZvciBtb3JlIGluZm9ybWF0
aW9uLg0KKioNCioqIE5vdGUgdGhhdCBmb3Iga2V5IGFuZCBtb3VzZSBiaW5k
aW5ncyB0byBiZSByZWNvZ25pemVkLCB0aGUgbW91c2UgY3Vyc29yIA0KKiog
bXVzdCBiZSBpbiB0aGUgT3BlbkdMIHZpZXdwb3J0IHdpbmRvdy4gIA0KKioN
CioqIFBhcmFsbGVsIHZpZXcgdm9sdW1lOg0KKiogICANCioqICAgIERPUCA9
IENXIC0gUFJQID0gKDAsIDAsIDApIC0gKDc1LCAxNTAsIDE1MCkgPSAoLTc1
LCAtMTUwLCAtMTUwKS4NCioqICAgIENsaXBwaW5nIHBsYW5lcyBhcmUgc2V0
IGF0IHggPSArLy0gMjAwLCB5ID0gKy8tIDIwMCwgbmVhcg0KKiogICAgY2xp
cHBpbmcgcGxhbmUgYXQgeiA9IDUwMDAsIGZhciBjbGlwcGluZyBwbGFuZSBh
dCB6ID0gLTUwMDAuDQoqKiAgICAgICAgICAgICAgICAgDQoqKiBLZXkgQmlu
ZGluZ3M6DQoqKg0KKiogICAgViAoXikgICAgICAgVHJhbnNsYXRlIC0xMCAo
KzEwKSB1bml0cyBhbG9uZyB5LWF4aXMNCioqICAgIFIgKHIpICAgICAgIFJv
dGF0ZSBzbW9vdGhseSAtMzAgKCszMCkgZGVncmVlcyBhcm91bmQgeS1heGlz
DQoqKiAgICBRICAgICAgICAgICBRdWl0DQoqKiAgICBoICAgICAgICAgICBQ
cmludCB0aGUga2V5IGJpbmRpbmdzIHRvIHN0ZG91dA0KKioNCioqIE1vdXNl
IEJpbmRpbmdzOg0KKioNCioqICAgIExFRlQgICAgICAgIEluaXRpdGF0ZSBh
bmltYXRpb24gbG9vcCANCioqDQoqKiBJbnRlcmZhY2UgQnV0dG9uIEl0ZW1z
Og0KKioNCioqICAgIFF1aXQgICAgICAgICAgICAgICAgICAgICAgUXVpdCAN
CioqICAgIFNob3cvSGlkZSBBeGVzICAgICAgICAgICAgU2hvdy9oaWRlIFdP
UkxEIGNvb3JkaW5hdGUgYXhlcw0KKiogICAgRGlzYWJsZS9FbmFibGUgTGln
aHRpbmcgICBUdXJuIGxpZ2h0aW5nIG9mZi9vbg0KKiogICAgQmFja2dyb3Vu
ZCBDb2xvciAgICAgICAgICBTZXQgY29sb3Igb2YgdGhlIHdpbmRvdyBiYWNr
Z3JvdW5kDQoqKiAgICBPYmplY3QgQ29sb3IgICAgICAgICAgICAgIFNldCBj
b2xvciBvZiB0aGUgY3VycmVudCBvYmplY3QNCioqICAgIFJlbmRlciBNb2Rl
ICAgICAgICAgICAgICAgU2V0IHJlbmRlciBtb2RlOiBzb2xpZCwgd2lyZWZy
YW1lLCBvciB2ZXJ0aWNlcw0KKioNCioqDQoqKg0KKiogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqLw0KDQoNCiNpbmNsdWRlIDxzdGRkZWYuaD4N
CiNpbmNsdWRlIDxzdGRpby5oPg0KI2luY2x1ZGUgPHN0ZGxpYi5oPg0KDQoj
aW5jbHVkZSAiWDExL2tleXN5bS5oIg0KDQojaW5jbHVkZSAiR0wvZ2wuaCIN
CiNpbmNsdWRlICJHTC9nbHUuaCINCg0KI2luY2x1ZGUgImZvcm1zLmgiDQoN
Cg0KLyoNCioqIERlZmluZSBzb21lIGNvbG9ycyBmb3IgZ2xDb2xvcjRmdigp
DQoqLw0KY29uc3QgR0xmbG9hdCB3aGl0ZVs0XSAgPSB7MS4wLCAxLjAsIDEu
MCwgMC4wfTsNCmNvbnN0IEdMZmxvYXQgcmVkWzRdICAgID0gezEuMCwgMC4w
LCAwLjAsIDAuMH07DQpjb25zdCBHTGZsb2F0IGdyZWVuWzRdICA9IHswLjAs
IDEuMCwgMC4wLCAwLjB9Ow0KY29uc3QgR0xmbG9hdCBibHVlWzRdICAgPSB7
MC4wLCAwLjAsIDEuMCwgMC4wfTsNCmNvbnN0IEdMZmxvYXQgeWVsbG93WzRd
ID0gezEuMCwgMS4wLCAwLjAsIDAuMH07DQpjb25zdCBHTGZsb2F0IGN5YW5b
NF0gICA9IHswLjAsIDEuMCwgMS4wLCAwLjB9Ow0KY29uc3QgR0xmbG9hdCB2
aW9sZXRbNF0gPSB7MS4wLCAwLjAsIDEuMCwgMC4wfTsNCmNvbnN0IEdMZmxv
YXQgYmxhY2tbNF0gID0gezAuMCwgMC4wLCAwLjAsIDAuMH07DQoNCg0KLyoN
CioqIFVzZXIgaW50ZXJmYWNlIGRhdGENCiovDQp0eXBlZGVmIHN0cnVjdCB7
DQoJRkxfRk9STSAgICpmb3JtOw0KCUZMX09CSkVDVCAqY2FudmFzOw0KCUZM
X09CSkVDVCAqcXVpdDsNCgl2b2lkICAgICAgKnZkYXRhOw0KCWxvbmcgICAg
ICBsZGF0YTsNCn0gRk9STV9TOw0KDQpzdGF0aWMgRk9STV9TICpidWlsZF9m
b3JtKHZvaWQpOw0KDQpGT1JNX1MgKnRoZUZvcm07DQoNCg0KLyoNCioqIExv
Y2FsIGZ1bmN0aW9uIHByb3RvdHlwZXMNCiovDQpzdGF0aWMgdm9pZCBkcmF3
X2F4ZXModm9pZCk7DQpzdGF0aWMgdm9pZCBkcmF3X2JveCh2b2lkKTsNCnN0
YXRpYyB2b2lkIGRyYXdfdG9wKHZvaWQpOw0KDQpzdGF0aWMgdm9pZCB1c2Fn
ZSh2b2lkKTsNCnN0YXRpYyB2b2lkIGluaXRpYWxpemUodm9pZCk7DQpzdGF0
aWMgdm9pZCBkaXNwbGF5KHZvaWQpOw0KDQpzdGF0aWMgdm9pZCBkb1JvdGF0
ZShHTGludCBhbmdsZSwgY29uc3QgY2hhciAqYXhpcyk7DQpzdGF0aWMgdm9p
ZCBkb1RyYW5zbGF0ZShHTGludCB2YWx1ZSwgY29uc3QgY2hhciAqYXhpcyk7
DQpzdGF0aWMgdm9pZCBzZXRGZ0NvbG9yKGNvbnN0IEdMZmxvYXQgY29sb3Jb
NF0pOw0Kc3RhdGljIHZvaWQgc2V0QmdDb2xvcihjb25zdCBHTGZsb2F0IGNv
bG9yWzRdKTsNCg0KDQovKg0KKiogQ2FudmFzIGV2ZW50IGhhbmRsZXJzDQoq
Lw0Kc3RhdGljIGludCBleHBvc2UoRkxfT0JKRUNUICpvYiwgV2luZG93IHdp
biwgaW50IHcsIGludCBoLCANCiAgICBYRXZlbnQgKnhldiwgdm9pZCAqdWRh
dGEpOw0Kc3RhdGljIGludCBidXR0b25wcmVzcyhGTF9PQkpFQ1QgKm9iLCBX
aW5kb3cgd2luLCBpbnQgdywgaW50IGgsIA0KICAgIFhFdmVudCAqeGV2LCB2
b2lkICp1ZGF0YSk7DQpzdGF0aWMgaW50IGtleWJvYXJkKEZMX09CSkVDVCAq
b2IsIFdpbmRvdyB3aW4sIGludCB3LCBpbnQgaCwgDQogICAgWEV2ZW50ICp4
ZXYsIHZvaWQgKnVkYXRhKTsNCg0KLyoNCioqIFVzZXIgaW50ZXJmYWNlIGNh
bGxiYWNrIGZ1bmN0aW9ucw0KKi8NCnN0YXRpYyB2b2lkIEF4ZXNDQihGTF9P
QkpFQ1QgKm9iLCBsb25nIGRhdGEpOw0Kc3RhdGljIHZvaWQgTGlnaHRpbmdD
QihGTF9PQkpFQ1QgKm9iLCBsb25nIGRhdGEpOw0Kc3RhdGljIHZvaWQgTW9k
ZUNCKEZMX09CSkVDVCAqb2IsIGxvbmcgZGF0YSk7DQpzdGF0aWMgdm9pZCBT
ZXRDb2xvckNCKEZMX09CSkVDVCAqb2IsIGxvbmcgZGF0YSk7DQoNCi8qIA0K
KiogRGVmYXVsdCByb3RhdGlvbiBhbmQgdHJhbnNsYXRpb24gdmFsdWVzLCBz
ZXQgaW4gaW5pdGlhbGl6ZSgpDQoqLw0Kc3RhdGljIEdMaW50IHJvdGF0aW9u
VmFsdWU7DQpzdGF0aWMgR0xpbnQgdHJhbnNsYXRpb25WYWx1ZTsNCg0KLyoN
CioqIEdsb2JhbCBzdGF0ZSB2YXJpYWJsZXMNCiovDQpjaGFyICpwcm9nbmFt
ZTsNCkdMYm9vbGVhbiBzaG93X2F4ZXMgPSBHTF9GQUxTRTsNCg0KR0xmbG9h
dCBjdXJyZW50RmdDb2xvcls0XTsNCkdMZmxvYXQgY3VycmVudEJnQ29sb3Jb
NF07DQpzdGF0aWMgR0xpbnQgY3VycmVudFRbM107DQpzdGF0aWMgR0xpbnQg
Y3VycmVudFJbM107DQoNCi8qDQoqKiBEaXNwbGF5IGxpc3QgaWRzDQoqLw0K
R0x1aW50IGF4ZXNfaWQ7DQpHTHVpbnQgYm94X2lkOw0KR0x1aW50IHRvcF9p
ZDsNCg0KLyoNCioqIE1vZGVsIGdlb21ldHJ5IHBhcmFtZXRlcnMNCiovDQpH
TGZsb2F0IG1vZGVsX29mZnNldFtdID0gezYwLjAsIDEwLjAsIDcwLjB9OyAg
LyogTW9kZWwgb2Zmc2V0IGZyb20gb3JpZ2luICovDQpHTGZsb2F0IGNlbnRy
b2lkW10gICAgID0gezE1LjAsIDU1LjAsIDE1LjB9OyAgLyogUmVsYXRpdmUg
dG8gb2Zmc2V0ICovDQoNCi8qDQoqKiBDdXJyZW50IHJlbmRlciBtb2RlDQoq
Lw0KdHlwZWRlZiBlbnVtIHsNCiAgICAgICBTT0xJRCA9IDEsIFdJUkVGUkFN
RSwgUE9JTlRTDQp9IERJU1BMQVlfTU9ERV9FOw0KDQpESVNQTEFZX01PREVf
RSBkaXNwbGF5X21vZGU7DQoNCg0KDQovKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICovDQovKg0KKiogQ2FsbGVkIG9uIEtleXByZXNzIGV2ZW50
DQoqLw0Kc3RhdGljIGludCBrZXlib2FyZChGTF9PQkpFQ1QgKm9iLCBXaW5k
b3cgd2luLCBpbnQgdywgaW50IGgsIA0KICAgIFhFdmVudCAqeGV2LCB2b2lk
ICp1ZGF0YSkNCnsNCiAgICBpbnQgaTsNCiAgICBjaGFyIGtleVsxMF07DQog
ICAgS2V5U3ltIGtleXN5bTsNCiAgICANCiAgIA0KICAgIFhMb29rdXBTdHJp
bmcoKFhLZXlFdmVudCAqKSB4ZXYsIGtleSwgc2l6ZW9mKGtleSksICZrZXlz
eW0sIE5VTEwpOw0KICAgIA0KICAgIHN3aXRjaCAoa2V5c3ltKSB7DQoNCiAg
ICAgICAvKiANCiAgICAgICAqKiBRIHRvIHF1aXQgDQogICAgICAgKi8NCiAg
ICAgICBjYXNlICdRJzogICANCiAgICAgICAgICAgZmxfZmluaXNoKCk7DQog
ICAgICAgICAgIGV4aXQoMCk7DQogICAgICAgICAgIGJyZWFrOw0KDQogICAg
ICAgLyoNCiAgICAgICAqKiBUcmFuc2xhdGlvbnMNCiAgICAgICAqLw0KDQog
ICAgICAgY2FzZSAnXic6ICAgDQogICAgICAgICAgIGRvVHJhbnNsYXRlKHRy
YW5zbGF0aW9uVmFsdWUsICJ5Iik7DQogICAgICAgICAgIGRpc3BsYXkoKTsN
CiAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICBjYXNlICdWJzogICANCiAg
ICAgICAgICAgZG9UcmFuc2xhdGUoLXRyYW5zbGF0aW9uVmFsdWUsICJ5Iik7
DQogICAgICAgICAgIGRpc3BsYXkoKTsNCiAgICAgICAgICAgYnJlYWs7DQoN
CiAgICAgICAvKg0KICAgICAgICoqIFJvdGF0aW9ucw0KICAgICAgICovDQoN
CiAgICAgICBjYXNlICdyJzogICANCiAgICAgICAgICAgZm9yIChpID0gMTsg
aSA8PSA2OyBpKyspIHsNCiAgICAgICAgICAgICAgIGRvUm90YXRlKHJvdGF0
aW9uVmFsdWUsICJ5Iik7DQogICAgICAgICAgICAgICBkaXNwbGF5KCk7DQog
ICAgICAgICAgIH0NCiAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICBjYXNl
ICdSJzogICANCiAgICAgICAgICAgZm9yIChpID0gMTsgaSA8PSA2OyBpKysp
IHsNCiAgICAgICAgICAgICAgIGRvUm90YXRlKC1yb3RhdGlvblZhbHVlLCAi
eSIpOw0KICAgICAgICAgICAgICAgZGlzcGxheSgpOw0KICAgICAgICAgICB9
DQogICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgLyogDQogICAgICAgKiog
QWRkZWQgb3B0aW9ucw0KICAgICAgICovDQoNCiAgICAgICBjYXNlICdoJzog
ICANCiAgICAgICAgICAgdXNhZ2UoKTsNCiAgICAgICAgICAgYnJlYWs7DQoN
CiAgICAgICBkZWZhdWx0OiBicmVhazsNCiAgICAgICAgICAgICAgIA0KICAg
IH0gLyogZW5kc3dpdGNoICovDQoNCg0KICAgIHJldHVybigwKTsNCn0NCg0K
DQovKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICovDQovKg0KKiog
Q2FsbGVkIG9uIEV4cG9zZSBldmVudA0KKi8NCnN0YXRpYyBpbnQgZXhwb3Nl
KEZMX09CSkVDVCAqb2IsIFdpbmRvdyB3aW4sIGludCB3LCBpbnQgaCwgDQog
ICAgWEV2ZW50ICp4ZXYsIHZvaWQgKnVkYXRhKQ0Kew0KICAgIGdsVmlld3Bv
cnQoMCwgMCwgKEdMaW50KSB3LCAoR0xpbnQpIGgpOw0KDQogICAgZGlzcGxh
eSgpOw0KDQoNCiAgICByZXR1cm4oMCk7DQp9DQoNCg0KLyogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqLw0KLyoNCioqIENhbGxlZCBvbiBCdXR0
b25QcmVzcyBldmVudCBpbiBjYW52YXMNCiovDQpzdGF0aWMgaW50IGJ1dHRv
bnByZXNzKEZMX09CSkVDVCAqb2IsIFdpbmRvdyB3aW4sIGludCB3LCBpbnQg
aCwgDQogICAgWEV2ZW50ICp4ZXYsIHZvaWQgKnVkYXRhKQ0Kew0KICAgIEdM
aW50IGk7DQogICAgR0x1aW50IG51bVJvdGF0aW9ucyA9IDM2Ow0KDQoNCiAg
ICAvKg0KICAgICoqIExFRlQgbW91c2UgYnV0dG9uIHByZXNzIGV2ZW50IG9u
bHkNCiAgICAqLw0KICAgIGlmICgoeGV2LT50eXBlID09IEJ1dHRvblByZXNz
KSAmJiAoeGV2LT54YnV0dG9uLmJ1dHRvbiA9PSAxKSkgew0KDQogICAgICAg
Zm9yIChpID0gMDsgaSA8IG51bVJvdGF0aW9uczsgaSsrKSB7DQogICAgICAg
ICAgIGRvVHJhbnNsYXRlKDUuMCwgInkiKTsNCiAgICAgICAgICAgZG9Sb3Rh
dGUoLTUuMCwgInkiKTsNCiAgICAgICAgICAgZGlzcGxheSgpOw0KICAgICAg
IH0NCg0KICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Sb3RhdGlvbnM7IGkr
Kykgew0KICAgICAgICAgICBkb1RyYW5zbGF0ZSgtNS4wLCAieSIpOw0KICAg
ICAgICAgICBkb1JvdGF0ZSgtNS4wLCAieSIpOw0KICAgICAgICAgICBkaXNw
bGF5KCk7DQogICAgICAgfQ0KDQogICAgfQ0KICAgICANCiAgICAgDQogICAg
cmV0dXJuIDA7DQp9DQoNCg0KLyogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqLw0KLyogDQoqKiBBIHNldCBvZiBheGVzIA0KKi8NCnN0YXRpYyB2
b2lkIGRyYXdfYXhlcyh2b2lkKQ0KeyAgICAgICAgIA0KICAgIGNvbnN0IEdM
aW50IG1heEF4aXNFeHRlbnQgPSA1MDA7DQogICAgDQoNCiAgICBnbFB1c2hB
dHRyaWIoR0xfQ1VSUkVOVF9CSVQgfCBHTF9MSUdIVElOR19CSVQpOw0KDQog
ICAgLyogDQogICAgKiogU3BlY2lmeSBHTF9FTUlTU0lPTiBzbyB0aGF0IHRo
ZSBheGVzIGFwcGVhciB0byBlbWl0DQogICAgKiogdGhlaXIgb3duIGxpZ2h0
LCBhbmQgaGVuY2UgYXJlIGFsd2F5cyB2aXNpYmxlDQogICAgKi8NCiAgICAN
CiAgICBnbENvbG9yNGZ2KHJlZCk7DQogICAgZ2xNYXRlcmlhbGZ2KEdMX0ZS
T05ULCBHTF9FTUlTU0lPTiwgcmVkKTsgICAgDQogICAgZ2xCZWdpbihHTF9M
SU5FUyk7DQoJZ2xWZXJ0ZXgzaSgwLCAwLCAwKTsNCglnbFZlcnRleDNpKG1h
eEF4aXNFeHRlbnQsIDAsIDApOw0KICAgIGdsRW5kKCk7DQoNCiAgICBnbENv
bG9yNGZ2KGdyZWVuKTsNCiAgICBnbE1hdGVyaWFsZnYoR0xfRlJPTlQsIEdM
X0VNSVNTSU9OLCBncmVlbik7DQogICAgZ2xCZWdpbihHTF9MSU5FUyk7DQoJ
Z2xWZXJ0ZXgzaSgwLCAwLCAwKTsNCglnbFZlcnRleDNpKDAsIG1heEF4aXNF
eHRlbnQsIDApOw0KICAgIGdsRW5kKCk7ICAgICANCg0KICAgIGdsQ29sb3I0
ZnYoYmx1ZSk7DQogICAgZ2xNYXRlcmlhbGZ2KEdMX0ZST05ULCBHTF9FTUlT
U0lPTiwgYmx1ZSk7DQogICAgZ2xCZWdpbihHTF9MSU5FUyk7DQoJZ2xWZXJ0
ZXgzaSgwLCAwLCAwKTsNCglnbFZlcnRleDNpKDAsIDAsIG1heEF4aXNFeHRl
bnQpOw0KICAgIGdsRW5kKCk7DQoNCiAgICBnbFBvcEF0dHJpYigpOw0KDQp9
DQoNCg0KLyogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqLw0KLyog
DQoqKiBHZW5lcmljIGJ1aWxkaW5nIGJsb2NrIGZvciB0aGUgbW9kZWw6IGN1
YmUgb2Ygc2l6ZSAxIHVuaXQgDQoqLw0Kc3RhdGljIHZvaWQgZHJhd19ib3go
dm9pZCkNCnsNCiAgICBHTGludCBpOw0KDQoNCiAgICAvKiANCiAgICAqKiBT
aXggZmFjZXMgb2YgYSB1bml0IGN1YmUgDQogICAgKi8NCiAgICBHTGludCBm
YWNlc1s2XVsxMl0gPSB7DQoJezAsMCwwLCAwLDEsMCwgMSwxLDAsIDEsMCww
fSwgIC8qIGJhY2sgICAqLw0KCXswLDAsMSwgMSwwLDEsIDEsMSwxLCAwLDEs
MX0sICAvKiBmcm9udCAgKi8NCgl7MCwwLDAsIDEsMCwwLCAxLDAsMSwgMCww
LDF9LCAgLyogYm90dG9tICovDQoJezAsMSwwLCAwLDEsMSwgMSwxLDEsIDEs
MSwwfSwgIC8qIHRvcCAgICAqLw0KCXswLDAsMCwgMCwwLDEsIDAsMSwxLCAw
LDEsMH0sICAvKiBsZWZ0ICAgKi8NCgl7MSwwLDAsIDEsMSwwLCAxLDEsMSwg
MSwwLDF9LCAgLyogcmlnaHQgICovDQogICAgICAgIH07DQoNCiAgICAvKiAN
CiAgICAqKiBDdWJlIG5vcm1hbHMNCiAgICAqLw0KICAgIEdMaW50IG5bNl1b
M10gPSB7ICANCiAgICAgICAgeyAwLCAgMCwgLTF9LCANCiAgICAgICAgeyAw
LCAgMCwgIDF9LCANCiAgICAgICAgeyAwLCAtMSwgIDB9LA0KICAgICAgICB7
IDAsICAxLCAgMH0sIA0KICAgICAgICB7LTEsICAwLCAgMH0sIA0KICAgICAg
ICB7IDEsICAwLCAgMH0sIA0KICAgIH07DQogIA0KICAgIGZvciAoaSA9IDA7
IGkgPCA2OyBpKyspIHsNCg0KCWdsQmVnaW4oR0xfUVVBRFMpOw0KDQoJICAg
IGdsTm9ybWFsM2kobltpXVswXSwgbltpXVsxXSwgbltpXVsyXSk7DQoNCiAg
ICAgICAgICAgIGdsVmVydGV4M2koZmFjZXNbaV1bMF0sIGZhY2VzW2ldWzFd
LCAgZmFjZXNbaV1bMl0pOw0KICAgICAgICAgICAgZ2xWZXJ0ZXgzaShmYWNl
c1tpXVszXSwgZmFjZXNbaV1bNF0sICBmYWNlc1tpXVs1XSk7DQogICAgICAg
ICAgICBnbFZlcnRleDNpKGZhY2VzW2ldWzZdLCBmYWNlc1tpXVs3XSwgIGZh
Y2VzW2ldWzhdKTsNCiAgICAgICAgICAgIGdsVmVydGV4M2koZmFjZXNbaV1b
OV0sIGZhY2VzW2ldWzEwXSwgZmFjZXNbaV1bMTFdKTsNCg0KCWdsRW5kKCk7
DQoNCiAgICB9DQoNCn0NCg0KDQovKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICovDQpzdGF0aWMgdm9pZCBkcmF3X3RvcCh2b2lkKQ0Kew0KICAg
IEdMVXF1YWRyaWNPYmogKnF1YWRPYmo7DQogICAgICAgIA0KDQogICAgLyoN
CiAgICAqKiBCdWlsZCBtb2RlbCBhdCB0aGUgb3JpZ2luOyB0cmFuc2xhdGUg
dG8gZGVzaXJlZCBsb2NhdGlvbg0KICAgICoqIGFmdGVyIGJ1aWxkaW5nLiAg
VGhlIGhpZXJhcmNoaWFsIG1vZGVsIGlzIGJ1aWx0IGZyb20gdHdvIHByaW1p
dGl2ZQ0KICAgICoqIGNvbXBvbmVudHM6IGEgY3ViZSBhbmQgYSBjeWxpbmRl
ci4NCiAgICAqLw0KICAgIA0KICAgIGdsUHVzaE1hdHJpeCgpOw0KICAgICAg
ICANCiAgICAgICAgLyoNCiAgICAgICAgKiogVHJhbnNsYXRlIHRvIGZpbmFs
IG1vZGVsIHBvc2l0aW9uDQogICAgICAgICovDQogICAgICAgIGdsVHJhbnNs
YXRlZihtb2RlbF9vZmZzZXRbMF0sIG1vZGVsX29mZnNldFsxXSwgbW9kZWxf
b2Zmc2V0WzJdKTsNCiAgICAgICAgDQoJLyoNCgkqKiBCYXNlIA0KCSovDQov
Kg0KCWdsUHVzaE1hdHJpeCgpOw0KICAgICAgICAgICAgZ2xTY2FsZWYoMzAu
MCwgOTAuMCwgMzAuMCk7ICAgIA0KICAgICAgICAgICAgZ2xDYWxsTGlzdChi
b3hfaWQpOw0KCWdsUG9wTWF0cml4KCk7DQoqLw0KCWdsUHVzaE1hdHJpeCgp
Ow0KICAgICAgICAgICAgcXVhZE9iaiA9IGdsdU5ld1F1YWRyaWMoKTs7DQog
ICAgICAgICAgICBnbFRyYW5zbGF0ZWYoY2VudHJvaWRbMF0sIDkwLjAsIGNl
bnRyb2lkWzJdKTsNCiAgICAgICAgICAgIGdsUm90YXRlZig5MC4wLCAxLjAs
IDAuMCwgMC4wKTsgIA0KCSAgICBnbHVDeWxpbmRlcihxdWFkT2JqLCAxNS4w
LCAxNS4wLCA5MC4wLCAyMCwgOCk7DQoJZ2xQb3BNYXRyaXgoKTsNCg0KCS8q
DQoJKiogVG9wIA0KCSovDQoJZ2xQdXNoTWF0cml4KCk7DQogICAgICAgICAg
ICBnbFRyYW5zbGF0ZWYoLTUwLjAsIDkwLjAsIDAuMCk7DQogICAgICAgICAg
ICBnbFNjYWxlZigxMzAuMCwgMjAuMCwgMzAuMCk7ICAgIA0KICAgICAgICAg
ICAgZ2xDYWxsTGlzdChib3hfaWQpOw0KCWdsUG9wTWF0cml4KCk7DQoNCgkv
Kg0KCSoqIFByb3BlbGxlcnM6IGxlZnQsIHJpZ2h0IA0KCSovDQoJZ2xQdXNo
TWF0cml4KCk7DQogICAgICAgICAgICBnbFRyYW5zbGF0ZWYoLTQ1LjAsIDk1
LjAsIDMwLjApOw0KICAgICAgICAgICAgZ2xTY2FsZWYoMTAuMCwgMTAuMCwg
NDAuMCk7ICAgIA0KICAgICAgICAgICAgZ2xDYWxsTGlzdChib3hfaWQpOw0K
CWdsUG9wTWF0cml4KCk7DQoNCglnbFB1c2hNYXRyaXgoKTsNCiAgICAgICAg
ICAgIGdsVHJhbnNsYXRlZig2MC4wLCA5NS4wLCAtNDAuMCk7DQogICAgICAg
ICAgICBnbFNjYWxlZigxMC4wLCAxMC4wLCA0MC4wKTsgICAgDQogICAgICAg
ICAgICBnbENhbGxMaXN0KGJveF9pZCk7DQoJZ2xQb3BNYXRyaXgoKTsNCg0K
ICAgIGdsUG9wTWF0cml4KCk7DQoNCn0NCg0KDQovKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICovDQovKg0KKiogQnVpbGRzIHRoZSBHVUkNCiov
DQpzdGF0aWMgRk9STV9TICpidWlsZF9mb3JtKHZvaWQpDQp7DQogICAgRkxf
T0JKRUNUICpvYmo7DQogICAgRk9STV9TICphRm9ybSA9IChGT1JNX1MgKikg
ZmxfY2FsbG9jKDEsIHNpemVvZigqYUZvcm0pKTsNCg0KICAgIGNvbnN0IEdM
aW50IGJ1dHRvbl93ID0gMTAwOw0KICAgIGNvbnN0IEdMaW50IGJ1dHRvbl9o
ID0gMjU7DQogICAgY29uc3QgR0xpbnQgY2FudmFzX3cgPSA0MDA7DQogICAg
Y29uc3QgR0xpbnQgY2FudmFzX2ggPSA0NTA7DQogICAgICAgICANCg0KICAg
IGlmIChhRm9ybSA9PSBOVUxMKSB7DQogICAgICAgcGVycm9yKCJidWlsZF9m
b3JtIik7DQogICAgICAgZXhpdCgxKTsNCiAgICB9DQoNCiAgICANCiAgICBh
Rm9ybS0+Zm9ybSA9IGZsX2Jnbl9mb3JtKEZMX05PX0JPWCwgDQogICAgICAg
IDQwICsgY2FudmFzX3cgKyBidXR0b25fdywgMjAgKyBjYW52YXNfaCk7DQog
ICAgDQoJb2JqID0gZmxfYWRkX2JveChGTF9VUF9CT1gsIA0KICAgICAgICAg
ICAgMCwgMCwgNDAgKyBjYW52YXNfdyArIGJ1dHRvbl93LCAyMCArIGNhbnZh
c19oLCAiIik7DQoNCglhRm9ybS0+Y2FudmFzID0gb2JqID0gZmxfYWRkX2ds
Y2FudmFzKEZMX05PUk1BTF9DQU5WQVMsDQoJICAgIDMwICsgYnV0dG9uX3cs
IDEwLCBjYW52YXNfdywgY2FudmFzX2gsICIiKTsNCg0KDQogICAgICAgIG9i
aiA9IGZsX2FkZF9mcmFtZShGTF9FTUJPU1NFRF9GUkFNRSwNCiAgICAgICAg
ICAgIDEwLCAxMCwgYnV0dG9uX3cgKyAxMCwgY2FudmFzX2gsICIiKTsNCg0K
CWFGb3JtLT5xdWl0ID0gb2JqID0gZmxfYWRkX2J1dHRvbihGTF9OT1JNQUxf
QlVUVE9OLCANCiAgICAgICAgICAgIDE1LCAxNSwgYnV0dG9uX3csIGJ1dHRv
bl9oLCAiUXVpdCIpOw0KCWZsX3NldF9vYmplY3RfbHN0eWxlKG9iaiwgRkxf
Qk9MRF9TVFlMRSk7DQoJZmxfc2V0X29iamVjdF9sc2l6ZShvYmosIEZMX05P
Uk1BTF9TSVpFKTsNCg0KDQoNCglvYmogPSBmbF9hZGRfYnV0dG9uKEZMX05P
Uk1BTF9CVVRUT04sIA0KICAgICAgICAgICAgMTUsIDU1LCBidXR0b25fdywg
YnV0dG9uX2gsICJTaG93IEF4ZXMiKTsNCglmbF9zZXRfb2JqZWN0X2xzdHls
ZShvYmosIEZMX0JPTERfU1RZTEUpOw0KCWZsX3NldF9vYmplY3RfbHNpemUo
b2JqLCBGTF9OT1JNQUxfU0laRSk7DQoJZmxfc2V0X29iamVjdF9jYWxsYmFj
ayhvYmosIEF4ZXNDQiwgMCk7DQoNCglvYmogPSBmbF9hZGRfYnV0dG9uKEZM
X05PUk1BTF9CVVRUT04sIA0KICAgICAgICAgICAgMTUsIDg1LCBidXR0b25f
dywgYnV0dG9uX2gsICJEaXNhYmxlIExpZ2h0aW5nIik7DQoJZmxfc2V0X29i
amVjdF9sc3R5bGUob2JqLCBGTF9CT0xEX1NUWUxFKTsNCglmbF9zZXRfb2Jq
ZWN0X2xzaXplKG9iaiwgRkxfTk9STUFMX1NJWkUpOw0KCWZsX3NldF9vYmpl
Y3RfY2FsbGJhY2sob2JqLCBMaWdodGluZ0NCLCAwKTsNCglmbF9zZXRfYnV0
dG9uKG9iaiwgMCk7DQoNCg0KDQogICAgICAgIG9iaiA9IGZsX2FkZF90ZXh0
KEZMX05PUk1BTF9URVhULCANCiAgICAgICAgICAgIDE1LCAxMjUsIGJ1dHRv
bl93LCBidXR0b25faCwgIkJhY2tncm91bmQiKTsgDQogICAgICAgIGZsX3Nl
dF9vYmplY3RfbHN0eWxlKG9iaiwgRkxfQk9MRElUQUxJQ19TVFlMRSk7DQog
ICAgICAgIGZsX3NldF9vYmplY3RfbGFsaWduKG9iaiwgRkxfQUxJR05fQ0VO
VEVSKTsNCg0KICAgICAgICBvYmogPSBmbF9hZGRfY2hvaWNlKEZMX05PUk1B
TF9DSE9JQ0UsDQogICAgICAgICAgICAxNSwgMTQ1LCBidXR0b25fdywgYnV0
dG9uX2gsICIiKTsNCiAgICAgICAgZmxfc2V0X29iamVjdF9ib3h0eXBlKG9i
aiwgRkxfVVBfQk9YKTsNCiAgICAgICAgZmxfc2V0X2Nob2ljZV9mb250c2l6
ZShvYmosIEZMX05PUk1BTF9TSVpFKTsNCiAgICAgICAgZmxfc2V0X2Nob2lj
ZV9mb250c3R5bGUob2JqLCBGTF9CT0xEX1NUWUxFKTsNCiAgICAgICAgZmxf
YWRkdG9fY2hvaWNlKG9iaiwgIldoaXRlfFJlZHxHcmVlbnxCbHVlfFllbGxv
d3xDeWFufFZpb2xldHxCbGFjayIpOw0KICAgICAgICBmbF9zZXRfb2JqZWN0
X2NhbGxiYWNrKG9iaiwgU2V0Q29sb3JDQiwgMCk7DQogICAgICAgIGZsX3Nl
dF9jaG9pY2Uob2JqLCA4KTsNCg0KDQogICAgDQogICAgICAgIG9iaiA9IGZs
X2FkZF90ZXh0KEZMX05PUk1BTF9URVhULCANCiAgICAgICAgICAgIDE1LCAx
NzUsIGJ1dHRvbl93LCBidXR0b25faCwgIk9iamVjdCBDb2xvciIpOyANCiAg
ICAgICAgZmxfc2V0X29iamVjdF9sc3R5bGUob2JqLCBGTF9CT0xESVRBTElD
X1NUWUxFKTsNCiAgICAgICAgZmxfc2V0X29iamVjdF9sYWxpZ24ob2JqLCBG
TF9BTElHTl9DRU5URVIpOw0KDQogICAgICAgIG9iaiA9IGZsX2FkZF9jaG9p
Y2UoRkxfTk9STUFMX0NIT0lDRSwNCiAgICAgICAgICAgIDE1LCAxOTUsIGJ1
dHRvbl93LCBidXR0b25faCwgIiIpOw0KICAgICAgICBmbF9zZXRfb2JqZWN0
X2JveHR5cGUob2JqLCBGTF9VUF9CT1gpOw0KICAgICAgICBmbF9zZXRfY2hv
aWNlX2ZvbnRzaXplKG9iaiwgRkxfTk9STUFMX1NJWkUpOw0KICAgICAgICBm
bF9zZXRfY2hvaWNlX2ZvbnRzdHlsZShvYmosIEZMX0JPTERfU1RZTEUpOw0K
ICAgICAgICBmbF9hZGR0b19jaG9pY2Uob2JqLCAiV2hpdGV8UmVkfEdyZWVu
fEJsdWV8WWVsbG93fEN5YW58VmlvbGV0fEJsYWNrIik7DQogICAgICAgIGZs
X3NldF9vYmplY3RfY2FsbGJhY2sob2JqLCBTZXRDb2xvckNCLCAxKTsNCiAg
ICAgICAgZmxfc2V0X2Nob2ljZShvYmosIDQpOw0KDQoNCiAgICAgICAgb2Jq
ID0gZmxfYWRkX3RleHQoRkxfTk9STUFMX1RFWFQsIA0KICAgICAgICAgICAg
MTUsIDIyNSwgYnV0dG9uX3csIGJ1dHRvbl9oLCAiUmVuZGVyIE1vZGUiKTsg
DQogICAgICAgIGZsX3NldF9vYmplY3RfbHN0eWxlKG9iaiwgRkxfQk9MRElU
QUxJQ19TVFlMRSk7DQogICAgICAgIGZsX3NldF9vYmplY3RfbGFsaWduKG9i
aiwgRkxfQUxJR05fQ0VOVEVSKTsNCg0KICAgICAgICBvYmogPSBmbF9hZGRf
Y2hvaWNlKEZMX05PUk1BTF9DSE9JQ0UsDQogICAgICAgICAgICAxNSwgMjQ1
LCBidXR0b25fdywgYnV0dG9uX2gsICIiKTsNCiAgICAgICAgZmxfc2V0X29i
amVjdF9ib3h0eXBlKG9iaiwgRkxfVVBfQk9YKTsNCiAgICAgICAgZmxfc2V0
X2Nob2ljZV9mb250c2l6ZShvYmosIEZMX05PUk1BTF9TSVpFKTsNCiAgICAg
ICAgZmxfc2V0X2Nob2ljZV9mb250c3R5bGUob2JqLCBGTF9CT0xEX1NUWUxF
KTsNCiAgICAgICAgZmxfYWRkdG9fY2hvaWNlKG9iaiwgIlNvbGlkfFdpcmVm
cmFtZXxWZXJ0aWNlcyIpOw0KCWZsX3NldF9vYmplY3RfY2FsbGJhY2sob2Jq
LCBNb2RlQ0IsIDApOw0KICAgDQogICAgZmxfZW5kX2Zvcm0oKTsNCg0KDQog
ICAgcmV0dXJuKGFGb3JtKTsNCn0NCg0KDQovKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICovDQpzdGF0aWMgdm9pZCBpbml0aWFsaXplKHZvaWQp
DQp7DQogICAgICAgICAgICAgDQogICAgR0xmbG9hdCBtW10gPSB7IDEuMCwg
IDAuMCwgIDAuMCwgIDAuMCwNCiAgICAgICAgICAgICAgICAgICAgMC4wLCAg
MS4wLCAgMC4wLCAgMC4wLCANCiAgICAgICAgICAgICAgICAgICAtMC41LCAt
MS4wLCAgMS4wLCAgMC4wLA0KICAgICAgICAgICAgICAgICAgICAwLjAsICAw
LjAsICAwLjAsICAxLjB9Ow0KICAgICAgICAgICAgDQogICAgR0xmbG9hdCBs
aWdodDBfcG9zaXRpb25bXSA9IHsxNTAuMCwgMTUwLjAsIDE1MC4wLCAwLjB9
OyAgDQoNCg0KDQogICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwg
R0xfREVQVEhfQlVGRkVSX0JJVCk7DQoNCiAgICAvKg0KICAgICoqIFNldCB2
aWV3IHZvbHVtZQ0KICAgICovDQogICAgZ2xNYXRyaXhNb2RlKEdMX1BST0pF
Q1RJT04pOw0KICAgIGdsTG9hZElkZW50aXR5KCk7DQoNCiAgICAvKg0KICAg
ICoqIE9ibGlxdWUgb3J0aG9ncmFwaGljIHBhcmFsbGVsIHByb2plY3Rpb246
IG5lZWQgdG8gc2hlYXIgdmlldyB2b2x1bWUNCiAgICAqLw0KICAgIGdsT3J0
aG8oLTIwMCwgMjAwLCAtMjAwLCAyMDAsIC01MDAwLCA1MDAwKTsgICAgDQog
ICAgZ2xNdWx0TWF0cml4ZihtKTsNCg0KICAgIGdsTWF0cml4TW9kZShHTF9N
T0RFTFZJRVcpOw0KICAgIGdsTG9hZElkZW50aXR5KCk7DQogIA0KICAgIGds
dUxvb2tBdCg3NS4wLCAxNTAuMCwgMTUwLjAsICAgICAgICAgICAvKiB2aWV3
cG9pbnQgKi8gICAgICANCiAgICAgICAgICAgICAgNzUuMCwgMTUwLjAsIDAu
MCwgICAgICAgICAgICAgLyogbG9vayBhdCAgICovDQogICAgICAgICAgICAg
IDAuMCwgMS4wLCAwLjApOyAgICAgICAgICAgICAgIC8qIHVwIHZlY3RvciAq
Lw0KICAgIA0KICAgIC8qIA0KICAgICoqIEEgc2luZ2xlIE9wZW5HTCBsaWdo
dA0KICAgICovDQogICAgZ2xMaWdodGZ2KEdMX0xJR0hUMCwgR0xfUE9TSVRJ
T04sIGxpZ2h0MF9wb3NpdGlvbik7DQogICAgZ2xFbmFibGUoR0xfTElHSFRJ
TkcpOw0KICAgIGdsRW5hYmxlKEdMX0xJR0hUMCk7DQoNCiAgICAvKiANCiAg
ICAqKiBOb3JtYWxpemUgdHJhbnNmb3JtZWQgbm9ybWFsIHZlY3RvcnMNCiAg
ICAqLw0KICAgIGdsRW5hYmxlKEdMX05PUk1BTElaRSk7DQogICAgICAgIA0K
ICAgIC8qIA0KICAgICoqIENhdXNlIG1hdGVyaWFsIHByb3BlcnR5IHRvIHRy
YWNrIGN1cnJlbnQgY29sb3IgYXQgYWxsIHRpbWVzDQogICAgKi8NCiAgICBn
bENvbG9yTWF0ZXJpYWwoR0xfRlJPTlQsIEdMX0FNQklFTlRfQU5EX0RJRkZV
U0UpOw0KICAgIGdsRW5hYmxlKEdMX0NPTE9SX01BVEVSSUFMKTsgDQogICAg
DQogICAgLyogDQogICAgKiogQ3VsbCBub24tdmlzaWJsZSBmYWNlcywgYW5k
IHVzZSBkZXB0aCBidWZmZXJpbmcgZm9yIGhpZGRlbiANCiAgICAqKiBzdXJm
YWNlIGVsaW1pbmF0aW9uDQogICAgKi8NCiAgICBnbEVuYWJsZShHTF9DVUxM
X0ZBQ0UpOw0KICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1QpOw0KICAgIA0K
ICAgIC8qDQogICAgKiogU2V0IGluaXRpYWwgY29sb3JzIGFuZCBkaXNwbGF5
IG1vZGUNCiAgICAqLw0KICAgIHNldEJnQ29sb3IoYmxhY2spOw0KICAgIHNl
dEZnQ29sb3IoYmx1ZSk7DQogICAgZGlzcGxheV9tb2RlID0gU09MSUQ7DQog
ICAgDQogICAgLyogDQogICAgKiogQnVpbGQgaGllcmFyY2hpY2FsIG1vZGVs
DQogICAgKi8NCiAgICBpZiAoKGF4ZXNfaWQgPSBnbEdlbkxpc3RzKDEpKSA9
PSAwKSB7DQogICAgICAgZnByaW50ZihzdGRlcnIsICIlczogY291bGQgbm90
IGdlbmVyYXRlIGRpc3BsYXkgbGlzdCBpZFxuIiwgcHJvZ25hbWUpOw0KICAg
ICAgIGV4aXQoMSk7DQogICAgfSAgICAgICAgDQogICAgZ2xOZXdMaXN0KGF4
ZXNfaWQsIEdMX0NPTVBJTEUpOw0KICAgICAgICBkcmF3X2F4ZXMoKTsNCiAg
ICBnbEVuZExpc3QoKTsNCg0KICAgIGlmICgoYm94X2lkID0gZ2xHZW5MaXN0
cygxKSkgPT0gMCkgew0KICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGNv
dWxkIG5vdCBnZW5lcmF0ZSBkaXNwbGF5IGxpc3QgaWRcbiIsIHByb2duYW1l
KTsNCiAgICAgICBleGl0KDEpOw0KICAgIH0gICAgICAgIA0KICAgIGdsTmV3
TGlzdChib3hfaWQsIEdMX0NPTVBJTEUpOw0KICAgICAgICBkcmF3X2JveCgp
Ow0KICAgIGdsRW5kTGlzdCgpOw0KICAgIA0KICAgIGlmICgodG9wX2lkID0g
Z2xHZW5MaXN0cygxKSkgPT0gMCkgew0KICAgICAgIGZwcmludGYoc3RkZXJy
LCAiJXM6IGNvdWxkIG5vdCBnZW5lcmF0ZSBkaXNwbGF5IGxpc3QgaWRcbiIs
IHByb2duYW1lKTsNCiAgICAgICBleGl0KDEpOw0KICAgIH0gICAgICAgIA0K
ICAgIGdsTmV3TGlzdCh0b3BfaWQsIEdMX0NPTVBJTEUpOw0KICAgICAgICBk
cmF3X3RvcCgpOw0KICAgIGdsRW5kTGlzdCgpOw0KDQogICAgLyoNCiAgICAq
KiBUcmFuc2Zvcm1hdGlvbiBwYXJhbWV0ZXJzDQogICAgKi8gICAgDQogICAg
cm90YXRpb25WYWx1ZSAgICA9IDU7DQogICAgdHJhbnNsYXRpb25WYWx1ZSA9
IDEwOw0KDQogICAgY3VycmVudFRbMF0gPSAwOyBjdXJyZW50VFsxXSA9IDA7
IGN1cnJlbnRUWzJdID0gMDsNCiAgICBjdXJyZW50UlswXSA9IDA7IGN1cnJl
bnRSWzFdID0gMDsgY3VycmVudFJbMl0gPSAwOw0KDQp9DQoNCg0KLyogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqLw0KaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KQ0Kew0KICAgIGNvbnN0IGNoYXIgKnRpdGxlID0g
IkNTIDY0NTogUHJvamVjdCAyIjsNCiAgICBHTGludCBpOyAgICAgICAgDQoN
CiAgICBGTF9JT1BUIGNvbnRyb2w7ICAgICAgIA0KICAgIEZMX09CSkVDVCAq
b2I7DQogIA0KICAgIGludCB0ZXN0X3N0cl93aWR0aCwgdGVzdF9zdHJfaGVp
Z2h0Ow0KICAgIGRvdWJsZSBzY2FsZUZhY3RvclsyXTsNCiAgICBjb25zdCBp
bnQgZHBpNzVfd2lkdGggID0gODk7DQogICAgY29uc3QgaW50IGRwaTc1X2hl
aWdodCA9IDE0OyAgICANCg0KDQogICAgcHJvZ25hbWUgPSAoY2hhciAqKSBt
YWxsb2MgKHN0cmxlbihhcmd2WzBdKSArIDEpOw0KICAgIGlmIChwcm9nbmFt
ZSA9PSBOVUxMKSB7DQogICAgICAgcGVycm9yKGFyZ3ZbMF0pOw0KICAgICAg
IGV4aXQoMSk7DQogICAgfQ0KICAgIHN0cmNweShwcm9nbmFtZSwgYXJndlsw
XSk7DQogICAgDQogICAgLyoNCiAgICAqKiBQcmludCB0aGUgaGVscCBvbiBz
dGFydHVwDQogICAgKi8NCiAgICB1c2FnZSgpOw0KDQogICAgLyogDQogICAg
KiogU2V0IHNvbWUgZGVmYXVsdHMgYW5kIGluaXRpYWxpemUgdGhlIHhmb3Jt
cyBsaWJyYXJ5IA0KICAgICovDQogICAgY29udHJvbC5idXR0b25Gb250U2l6
ZSA9IDEyOw0KICAgIGNvbnRyb2wubGFiZWxGb250U2l6ZSAgPSAxMjsNCiAg
ICBjb250cm9sLm1lbnVGb250U2l6ZSAgID0gMTI7DQogICAgY29udHJvbC5i
b3JkZXJXaWR0aCAgICA9IC0yOw0KICAgICAgICANCiAgICBmbF9zZXRfZGVm
YXVsdHMoRkxfUERCdXR0b25Gb250U2l6ZXwNCiAgICAgICAgICAgICAgICAg
ICAgRkxfUERMYWJlbEZvbnRTaXplfA0KICAgICAgICAgICAgICAgICAgICBG
TF9QRE1lbnVGb250U2l6ZXwNCiAgICAgICAgICAgICAgICAgICAgRkxfUERC
b3JkZXJXaWR0aCwNCiAgICAgICAgICAgICAgICAgICAgJmNvbnRyb2wpOw0K
ICAgIA0KICAgIGZsX2luaXRpYWxpemUoJmFyZ2MsIGFyZ3YsICIiLCAwLCAw
KTsNCg0KICAgIC8qIEdldCBhIHRlc3Qgc3RyaW5nIGRpbWVuc2lvbjsgbWFp
biBmb3JtIGlzIHNjYWxlZCBiYXNlZCBvbiBhIA0KICAgICoqICJub3JtYWwi
IHNpemUgY29tcHV0ZWQgZnJvbSBhIDc1ZHBpIGZvbnQgDQogICAgKi8NCiAg
ICBmbF9nZXRfc3RyaW5nX2RpbWVuc2lvbihGTF9CT0xEX1NUWUxFLCBGTF9O
T1JNQUxfU0laRSwgIlRFU1RfU1RSSU5HIiwgDQogICAgICAgIHN0cmxlbigi
VEVTVF9TVFJJTkciKSwgJnRlc3Rfc3RyX3dpZHRoLCAmdGVzdF9zdHJfaGVp
Z2h0KTsNCg0KICAgIHNjYWxlRmFjdG9yWzBdID0gKGRvdWJsZSkgdGVzdF9z
dHJfd2lkdGggLyBkcGk3NV93aWR0aDsNCiAgICBzY2FsZUZhY3RvclsxXSA9
IChkb3VibGUpIHRlc3Rfc3RyX2hlaWdodCAvIGRwaTc1X2hlaWdodDsNCg0K
ICAgIC8qDQogICAgKiogQnVpbGQgdGhlIHVzZXIgaW50ZXJmYWNlDQogICAg
Ki8NCiAgICB0aGVGb3JtID0gYnVpbGRfZm9ybSgpOw0KICAgIA0KICAgIC8q
DQogICAgKiogQXR0YWNoIGV2ZW50IGhhbmRsZXJzDQogICAgKi8NCiAgICBm
bF9hZGRfY2FudmFzX2hhbmRsZXIodGhlRm9ybS0+Y2FudmFzLCBFeHBvc2Us
IGV4cG9zZSwgMCk7DQogICAgZmxfYWRkX2NhbnZhc19oYW5kbGVyKHRoZUZv
cm0tPmNhbnZhcywgQnV0dG9uUHJlc3MsIGJ1dHRvbnByZXNzLCAwKTsNCiAg
ICBmbF9hZGRfY2FudmFzX2hhbmRsZXIodGhlRm9ybS0+Y2FudmFzLCBLZXlQ
cmVzcywga2V5Ym9hcmQsIDApOw0KDQogICAgLyogDQogICAgKiogU2NhbGUg
Zm9ybSBiYXNlZCBvbiBjdXJyZW50IGZvbnQsIGFuZCBtYXAgdG8gc2NyZWVu
DQogICAgKi8NCiAgICBmbF9zY2FsZV9mb3JtKHRoZUZvcm0tPmZvcm0sIHNj
YWxlRmFjdG9yWzBdLCBzY2FsZUZhY3RvclsxXSk7DQogICAgZmxfc2hvd19m
b3JtKHRoZUZvcm0tPmZvcm0sIEZMX1BMQUNFX0NFTlRFUkZSRUUsIEZMX0ZV
TExCT1JERVIsIHRpdGxlKTsNCg0KICAgIC8qDQogICAgKiogSW5pdGlhbGl6
ZSBwYXJhbWV0ZXJzDQogICAgKi8NCiAgICBpbml0aWFsaXplKCk7DQogICAg
DQogICAgLyoNCiAgICAqKiBTdGFydCBldmVudCBsb29wDQogICAgKi8NCiAg
ICB3aGlsZSAoKG9iID0gZmxfZG9fZm9ybXMoKSkgIT0gdGhlRm9ybS0+cXVp
dCk7DQogICAgDQogICAgDQogICAgZmxfZmluaXNoKCk7ICAgIA0KICAgIHJl
dHVybigwKTsNCg0KfQ0KDQoNCi8qICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKi8NCnN0YXRpYyB2b2lkIGRpc3BsYXkodm9pZCkNCnsNCg0KICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZF
Ul9CSVQpOw0KICAgIA0KICAgIHN3aXRjaCAoZGlzcGxheV9tb2RlKSB7DQog
ICAgDQoJY2FzZSBTT0xJRDogICAgIGdsUG9seWdvbk1vZGUoR0xfRlJPTlQs
IEdMX0ZJTEwpOyAgYnJlYWs7DQoJY2FzZSBXSVJFRlJBTUU6IGdsUG9seWdv
bk1vZGUoR0xfRlJPTlQsIEdMX0xJTkUpOyAgYnJlYWs7DQoJY2FzZSBQT0lO
VFM6ICAgIGdsUG9seWdvbk1vZGUoR0xfRlJPTlQsIEdMX1BPSU5UKTsgYnJl
YWs7DQoNCglkZWZhdWx0OiBwcmludGYoIkludGVybmFsIGVycm9yOiBkaXNw
bGF5OiBJbnZhbGlkIGRpc3BsYXlfbW9kZVxuIik7DQogICAgICAgIAkgZGlz
cGxheV9tb2RlID0gU09MSUQ7DQogICAgICAgIAkgYnJlYWs7DQogICAgfSAg
ICAgICANCg0KICAgIC8qDQogICAgKiogVFJBTlNGT1JNQVRJT05TDQogICAg
KioNCiAgICAqKiBXZSB3YW50IHRvIHJvdGF0ZSBhYm91dCB0aGUgb2JqZWN0
J3MgY2VudHJvaWQsIHNvIHBlcmZvcm0gdGhlIA0KICAgICoqIGZvbGxvd2lu
ZyB0cmFuc2Zvcm1hdGlvbnM6DQogICAgKioNCiAgICAqKiAgMS4gVHJhbnNs
YXRlIG9iamVjdCB0byBvcmlnaW4uICBTaW5jZSB0aGUgbW9kZWwgd2FzIGNv
bnN0cnVjdGVkIA0KICAgICoqICAgICByZWxhdGl2ZSB0byB0aGUgYm90dG9t
IGNvcm5lciB2ZXJ0ZXggb2YgdGhlIGJhc2UsIGEgc2Vjb25kDQogICAgKiog
ICAgIHRyYW5zbGF0aW9uIGlzIHJlcXVpcmVkIHNvIHRoYXQgdGhlIGNlbnRl
ciBvZiB0aGUgbW9kZWwgaXMNCiAgICAqKiAgICAgYXQgdGhlIG9yaWdpbiBw
cmlvciB0byB0aGUgaW5pdGlhdGlvbiBvZiB0aGUgcm90YXRpb25zLiAgVGhl
DQogICAgKiogICAgIHZhbHVlcyByZXF1aXJlZCBmb3IgdGhpcyB0cmFuc2xh
dGlvbiBhcmUgc3RvcmVkIGluIG1vZGVsX29mZnNldFszXQ0KICAgICoqDQog
ICAgKiogIDIuIEFwcGx5IHJvdGF0aW9ucy4gIE9yZGVyIG9mIHJvdGF0aW9u
cyBpcyBpcnJlbGV2YW50LCBzaW5jZSANCiAgICAqKiAgICAgd2Ugb25seSBz
cGVjaWZ5IGEgc2luZ2xlIHJvdGF0aW9uIGFib3V0IG9uZSBvZiB0aGUgdGhy
ZWUgcHJpbmNpcGFsIA0KICAgICoqICAgICBheGVzIChXT1JMRCB4LCB5LCB6
KSBmb3IgZWFjaCBwYXNzIHRocm91Z2ggdGhpcyBwb3J0aW9uIG9mIGNvZGUu
IA0KICAgICoqICAgICBUaGVyZSBhcmUgbm8gcm90YXRpb25zIGFib3V0IGFy
Yml0cmFyeSBheGVzLiANCiAgICAqKiAgDQogICAgKiogIDMuIFRyYW5zbGF0
ZSB0aGUgb2JqZWN0IGJhY2sgdG8gaXRzIG9yaWdpbmFsIHBvc2l0aW9uLiAg
ICANCiAgICAqKg0KICAgICoqICA0LiBBcHBseSB1c2VyLXNwZWNpZmllZCB0
cmFuc2xhdGlvbnMuDQogICAgKioNCiAgICAqKiBUaGVzZSB0cmFuc2Zvcm1h
dGlvbnMgbXVzdCBhcHBlYXIgaW4gdGhlIGNvZGUgaW4gcmV2ZXJzZSBvcmRl
ci4gDQogICAgKi8NCiAgICANCiAgICBnbFB1c2hBdHRyaWIoR0xfQ1VSUkVO
VF9CSVQpOw0KICAgIGdsUHVzaE1hdHJpeCgpOw0KICAgIA0KICAgICAgICBn
bENvbG9yNGZ2KGN1cnJlbnRGZ0NvbG9yKTsNCiAgICAgDQoJZ2xUcmFuc2xh
dGVmKGN1cnJlbnRUWzBdLCBjdXJyZW50VFsxXSwgY3VycmVudFRbMl0pOw0K
DQogICAgICAgIGdsVHJhbnNsYXRlZihtb2RlbF9vZmZzZXRbMF0sIG1vZGVs
X29mZnNldFsxXSwgbW9kZWxfb2Zmc2V0WzJdKTsNCglnbFRyYW5zbGF0ZWYo
Y2VudHJvaWRbMF0sIGNlbnRyb2lkWzFdLCBjZW50cm9pZFsyXSk7ICAgICAg
IA0KDQoJZ2xSb3RhdGVmKGN1cnJlbnRSWzBdLCAxLjAsIDAuMCwgMC4wKTsN
CglnbFJvdGF0ZWYoY3VycmVudFJbMV0sIDAuMCwgMS4wLCAwLjApOw0KCWds
Um90YXRlZihjdXJyZW50UlsyXSwgMC4wLCAwLjAsIDEuMCk7DQoNCglnbFRy
YW5zbGF0ZWYoLWNlbnRyb2lkWzBdLCAtY2VudHJvaWRbMV0sIC1jZW50cm9p
ZFsyXSk7DQogICAgICAgIGdsVHJhbnNsYXRlZigtbW9kZWxfb2Zmc2V0WzBd
LCAtbW9kZWxfb2Zmc2V0WzFdLCAtbW9kZWxfb2Zmc2V0WzJdKTsNCg0KCWds
Q2FsbExpc3QodG9wX2lkKTsNCg0KICAgIGdsUG9wTWF0cml4KCk7DQogICAg
Z2xQb3BBdHRyaWIoKTsNCiAgICANCiAgICBpZiAoc2hvd19heGVzKQ0KICAg
ICAgIGdsQ2FsbExpc3QoYXhlc19pZCk7DQoNCiAgICBnbFhTd2FwQnVmZmVy
cyhmbF9kaXNwbGF5LCBmbF9nZXRfY2FudmFzX2lkKHRoZUZvcm0tPmNhbnZh
cykpOw0KDQp9DQoNCg0KLyogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqLw0Kc3RhdGljIHZvaWQgZG9Sb3RhdGUoR0xpbnQgYW5nbGUsIGNvbnN0
IGNoYXIgKmF4aXMpDQp7DQogICANCiAgICBpZiAoKHN0cmNtcChheGlzLCAi
eCIpID09IDApIHx8IChzdHJjbXAoYXhpcywgIlgiKSA9PSAwKSkgDQogICAg
ICAgY3VycmVudFJbMF0gPSAoY3VycmVudFJbMF0gKyBhbmdsZSkgJSAzNjA7
ICAgIA0KDQogICAgaWYgKChzdHJjbXAoYXhpcywgInkiKSA9PSAwKSB8fCAo
c3RyY21wKGF4aXMsICJZIikgPT0gMCkpIA0KICAgICAgIGN1cnJlbnRSWzFd
ID0gKGN1cnJlbnRSWzFdICsgYW5nbGUpICUgMzYwOyAgICANCg0KICAgIGlm
ICgoc3RyY21wKGF4aXMsICJ6IikgPT0gMCkgfHwgKHN0cmNtcChheGlzLCAi
WiIpID09IDApKSANCiAgICAgICBjdXJyZW50UlsyXSA9IChjdXJyZW50Ulsy
XSArIGFuZ2xlKSAlIDM2MDsgICAgDQoNCn0NCi8qICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKi8NCnN0YXRpYyB2b2lkIGRvVHJhbnNsYXRlKEdM
aW50IHZhbHVlLCBjb25zdCBjaGFyICpheGlzKQ0Kew0KICAgIGlmICgoc3Ry
Y21wKGF4aXMsICJ4IikgPT0gMCkgfHwgKHN0cmNtcChheGlzLCAiWCIpID09
IDApKSANCiAgICAgICBjdXJyZW50VFswXSArPSB2YWx1ZTsNCg0KICAgIGlm
ICgoc3RyY21wKGF4aXMsICJ5IikgPT0gMCkgfHwgKHN0cmNtcChheGlzLCAi
WSIpID09IDApKSANCiAgICAgICBjdXJyZW50VFsxXSArPSB2YWx1ZTsNCg0K
ICAgIGlmICgoc3RyY21wKGF4aXMsICJ6IikgPT0gMCkgfHwgKHN0cmNtcChh
eGlzLCAiWiIpID09IDApKSANCiAgICAgICBjdXJyZW50VFsyXSArPSB2YWx1
ZTsNCg0KfQ0KDQoNCi8qICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
Ki8NCnN0YXRpYyB2b2lkIHNldEZnQ29sb3IoY29uc3QgR0xmbG9hdCBjb2xv
cls0XSkNCnsNCiAgICBHTGludCBpOw0KICAgIA0KICAgIA0KICAgIGZvciAo
aSA9IDA7IGkgPCA0OyBpKyspDQogICAgICAgIGN1cnJlbnRGZ0NvbG9yW2ld
ID0gY29sb3JbaV07DQogICAgICAgIA0KDQp9DQovKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICovDQpzdGF0aWMgdm9pZCBzZXRCZ0NvbG9yKGNv
bnN0IEdMZmxvYXQgY29sb3JbNF0pDQp7DQogICAgR0xpbnQgaTsNCiAgICAN
CiAgICANCiAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQ0KICAgICAgICBj
dXJyZW50QmdDb2xvcltpXSA9IGNvbG9yW2ldOw0KDQogICAgZ2xDbGVhckNv
bG9yKGN1cnJlbnRCZ0NvbG9yWzBdLCBjdXJyZW50QmdDb2xvclsxXSwgDQog
ICAgICAgIGN1cnJlbnRCZ0NvbG9yWzJdLCBjdXJyZW50QmdDb2xvclszXSk7
DQoNCn0NCg0KDQovKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICov
DQpzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQ0Kew0KDQogICAgY29uc3QgY2hh
ciAqaGVscCA9IA0KDQoJIlxuRGVmYXVsdCBrZXkgYW5kIG1vdXNlIGJpbmRp
bmdzXG5cbiINCg0KICAgICAgICAiXHRWICheKVx0XHRUcmFuc2xhdGUgLTEw
ICgrMTApIHVuaXRzIGFsb25nIHktYXhpc1xuIg0KICAgICAgICAiXHRSIChy
KVx0XHRSb3RhdGUgc21vb3RobHkgLTMwICgrMzApIGRlZ3JlZXMgYXJvdW5k
IHktYXhpc1xuIg0KICAgICAgICAiXHRoXHRcdFByaW50IGhlbHBcbiINCiAg
ICAgICAgIlx0TGVmdCBNb3VzZVx0SW5pdGlhdGUgYW5pbWF0aW9uXG4iDQog
ICAgICAgICANCiAgICAgICAgIlx0UVx0XHRRdWl0XG4iOw0KDQogICAgcHJp
bnRmKCIlc1xuIiwgaGVscCk7DQoNCn0NCg0KDQovKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICovIA0Kc3RhdGljIHZvaWQgQXhlc0NCKEZMX09C
SkVDVCAqb2IsIGxvbmcgZGF0YSkNCnsgDQogICAgaWYgKHNob3dfYXhlcykg
ew0KICAgICAgIHNob3dfYXhlcyA9IEdMX0ZBTFNFOw0KICAgICAgIGZsX3Nl
dF9vYmplY3RfbGFiZWwob2IsICJTaG93IEF4ZXMiKTsgDQogICAgfQ0KICAg
IGVsc2Ugew0KICAgICAgIHNob3dfYXhlcyA9IEdMX1RSVUU7DQogICAgICAg
Zmxfc2V0X29iamVjdF9sYWJlbChvYiwgIkhpZGUgQXhlcyIpOyANCiAgICB9
DQogICAgICAgIA0KICAgIA0KICAgIGRpc3BsYXkoKTsgICAgDQp9DQoNCg0K
LyogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqLyANCnN0YXRpYyB2
b2lkIExpZ2h0aW5nQ0IoRkxfT0JKRUNUICpvYiwgbG9uZyBkYXRhKQ0KeyAN
CiAgICBpZiAoZ2xJc0VuYWJsZWQoR0xfTElHSFRJTkcpKSB7DQogICAgICAg
Z2xEaXNhYmxlKEdMX0xJR0hUSU5HKTsNCiAgICAgICBmbF9zZXRfb2JqZWN0
X2xhYmVsKG9iLCAiRW5hYmxlIExpZ2h0aW5nIik7IA0KICAgIH0gICAgDQog
ICAgZWxzZSB7DQogICAgICAgZ2xFbmFibGUoR0xfTElHSFRJTkcpOw0KICAg
ICAgIGZsX3NldF9vYmplY3RfbGFiZWwob2IsICJEaXNhYmxlIExpZ2h0aW5n
Iik7IA0KICAgIH0gICAgDQogICAgICAgICAgICAgICAgIA0KICAgIGRpc3Bs
YXkoKTsgDQp9DQoNCg0KLyogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqLyANCnN0YXRpYyB2b2lkIE1vZGVDQihGTF9PQkpFQ1QgKm9iLCBsb25n
IGRhdGEpDQp7IA0KICAgIGRpc3BsYXlfbW9kZSA9IGZsX2dldF9jaG9pY2Uo
b2IpOw0KDQogICAgZGlzcGxheSgpOw0KDQp9DQoNCg0KLyogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqLyANCnN0YXRpYyB2b2lkIFNldENvbG9y
Q0IoRkxfT0JKRUNUICpvYiwgbG9uZyBkYXRhKQ0KeyANCiAgICBHTGludCBp
dGVtOw0KDQogICAgDQogICAgaXRlbSA9IGZsX2dldF9jaG9pY2Uob2IpOw0K
ICAgIA0KICAgIHN3aXRjaCAoZGF0YSkgew0KICAgIA0KCWNhc2UgMDogLyog
QmFja2dyb3VuZCBjb2xvciAqLw0KCSAgICBzd2l0Y2ggKGl0ZW0pIHsNCiAg
ICAgICAgCSAgIGNhc2UgMTogc2V0QmdDb2xvcih3aGl0ZSk7ICBicmVhazsN
CiAgICAgICAgCSAgIGNhc2UgMjogc2V0QmdDb2xvcihyZWQpOyAgICBicmVh
azsNCiAgICAgICAgCSAgIGNhc2UgMzogc2V0QmdDb2xvcihncmVlbik7ICBi
cmVhazsNCiAgICAgICAgCSAgIGNhc2UgNDogc2V0QmdDb2xvcihibHVlKTsg
ICBicmVhazsNCiAgICAgICAgCSAgIGNhc2UgNTogc2V0QmdDb2xvcih5ZWxs
b3cpOyBicmVhazsNCiAgICAgICAgCSAgIGNhc2UgNjogc2V0QmdDb2xvcihj
eWFuKTsgICBicmVhazsNCiAgICAgICAgCSAgIGNhc2UgNzogc2V0QmdDb2xv
cih2aW9sZXQpOyBicmVhazsNCiAgICAgICAgCSAgIGNhc2UgODogc2V0QmdD
b2xvcihibGFjayk7ICBicmVhazsNCgkgICAgfSAgICAgICAgICAgICAgICAg
ICANCgkgICAgYnJlYWs7IA0KDQoJY2FzZSAxOiAvKiBGb3JlZ3JvdW5kIGNv
bG9yICovDQoJICAgIHN3aXRjaCAoaXRlbSkgew0KICAgICAgICAJICAgY2Fz
ZSAxOiBzZXRGZ0NvbG9yKHdoaXRlKTsgIGJyZWFrOw0KICAgICAgICAJICAg
Y2FzZSAyOiBzZXRGZ0NvbG9yKHJlZCk7ICAgIGJyZWFrOw0KICAgICAgICAJ
ICAgY2FzZSAzOiBzZXRGZ0NvbG9yKGdyZWVuKTsgIGJyZWFrOw0KICAgICAg
ICAJICAgY2FzZSA0OiBzZXRGZ0NvbG9yKGJsdWUpOyAgIGJyZWFrOw0KICAg
ICAgICAJICAgY2FzZSA1OiBzZXRGZ0NvbG9yKHllbGxvdyk7IGJyZWFrOw0K
ICAgICAgICAJICAgY2FzZSA2OiBzZXRGZ0NvbG9yKGN5YW4pOyAgIGJyZWFr
Ow0KICAgICAgICAJICAgY2FzZSA3OiBzZXRGZ0NvbG9yKHZpb2xldCk7IGJy
ZWFrOw0KICAgICAgICAJICAgY2FzZSA4OiBzZXRGZ0NvbG9yKGJsYWNrKTsg
IGJyZWFrOw0KCSAgICB9ICAgICAgICAgICAgICAgICAgIA0KCSAgICBicmVh
azsgICAgIA0KICAgIH0NCg0KICAgIGRpc3BsYXkoKTsNCg0KfQ0KDQoNCg==
--0-1218875433-893413302=:24795--
_________________________________________________
To unsubscribe, send the message "unsubscribe" to
xforms-request@bob.usuf2.usuhs.mil or see
http://bob.usuf2.usuhs.mil/mailserv/xforms.html
XForms Home Page: http://bragg.phys.uwm.edu/xforms
List Archive: http://bob.usuf2.usuhs.mil/mailserv/list-archives/