Date: Mon, 2 Jun 1997 14:26:49 -0400 (EDT) From: Timothy Robb To: djgpp AT delorie DOT com Subject: LinkedLists Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1909242623-2067264171-865276009=:2912" Precedence: bulk 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 AT docserver DOT cac DOT washington DOT edu for more info. ---1909242623-2067264171-865276009=:2912 Content-Type: TEXT/PLAIN; charset=US-ASCII I'm having a problem with the attached linked list program. The class delecaration and implementaion are in the keyword.h keyword.cc and I have a driver.cc to test the class out. The problem is with the sorting, in perticular the LinkedList::partition function which is called by LinkedList::quickSort. If the lists are not sorted the program goes into an infite loop more or less. Can some help me out? Thanks in advance, Timothy Robb ---1909242623-2067264171-865276009=:2912 Content-Type: APPLICATION/octet-stream; name="list.tar" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: ZHJpdmVyLmNjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDY0NCAAMDAyMjIwIAAwMDAwMjQgADAwMDAwMDAxMDY1 IDA2MzQ0NjA0MzUxIDAxMzAwMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMHRyb2Ji AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXNlcgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAwMDAwMDAgADAwMDAwMCAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAjaW5jbHVkZSA8aW9zdHJlYW0uaD4KI2luY2x1 ZGUgImtleXdvcmQuaCIKCm1haW4oKQp7CiAgY2hhciBpbnB1dFs4MF07CiAg CgogIExpbmtlZExpc3QgbGlzdDsKICBpbnQgbnVtYmVyID0gMzsKCgogIGZv cihpbnQgaSA9IDA7IGkgPCBudW1iZXI7IGkrKykKICAgIHsKICAgICAgY291 dCA8PCAiRW50ZXIgbmFtZSA6ICI7CiAgICAgIGNpbiAgPj4gaW5wdXQ7Cgog ICAgICBsaXN0LmFkZChpbnB1dCk7CiAgICB9CgogIExpbmtlZExpc3QgKnAg PSAmbGlzdDsKCiAgZm9yKCBpbnQgaSA9IDA7IGkgPCBudW1iZXI7IGkrKykK ICAgIHsKICAgICAgY291dCA8PCAiSXRlbSAiIDw8IGkgPDwgIiA6ICIgPDwg cC0+c3RyaW5nKCkgPDwgZW5kbDsKICAgICAgcCA9IHAtPm5leHRsaW5rKCk7 CiAgICB9CiAKICBsaXN0LnNvcnQoKTsKCiAgcCA9ICZsaXN0OwoKICBmb3Io IGludCBpID0gMDsgaSA8IG51bWJlcjsgaSsrKQogICAgewogICAgICBjb3V0 IDw8ICJJdGVtICIgPDwgaSA8PCAiIDogIiA8PCBwLT5zdHJpbmcoKSA8PCBl bmRsOwogICAgICBwID0gcC0+bmV4dGxpbmsoKTsKICAgIH0KCn0KICAKICBj aGFyIGlucHV0WzgwXTsKICAKCiAgTGlua2VkTGlzdCBsaXN0OwogIGludCBu dW1iZXIgPSAzOwoKCiAgZm9yKGludCBpID0gMDsgaSA8IG51bWJlcjsgaSsr KQogICAgewogICAgICBjb3V0IDw8ICJFbnRlciBuYW1lIDogIjsKICAgICAg Y2luICA+PiBpbnB1dDsKCiAgICAgIGxpc3QuYWRkKGlucHV0KTsKICAgIH0K CiAgTGlua2VkTGlzdCAqcCA9ICZsaXN0OwoKICBmb3IoIGludCBpID0gMDsg aSA8IG51bWJlcjsgaSsrKQogICAgewogICAgICBjb3V0IDw8ICJJdGVtICIg PDwgaSA8PCAiIDogIiA8PCBwLT5zdHJpbmcoKSA8PCBlbmRsOwogICAgICBw ID0gcC0+bmV4dGxpbmsoKTsKICAgIH0KIAogIGxpc3Quc29ydCgpOwoKICBw ID0gJmxpc3Q7CgogIGZvciggaW50IGkgPSAwOyBpIDwgbnVtYmVyOyBpKysp CiAgICB7CiAgICAgIGNvdXQgPDwgIkl0ZW0gIiA8PCBpIDw8ICIgOiAiIDw8 IHAtPnN0a2V5d29yZC5jYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAADAwMDY0NCAAMDAyMjIwIAAwMDAwMjQgADAwMDAw MDA2MTQ1IDA2MzQ0NjA0MzQ0IDAxMzIwMAAgMAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAw MHRyb2JiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXNlcgAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAgADAwMDAwMCAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjaW5jbHVkZSAia2V5d29yZC5oIgoj aW5jbHVkZSA8c3RyaW5nLmg+CgppbnQgTGlua2VkTGlzdDo6ZGVsZXRlRGly ZWN0aW9uPTA7CgpMaW5rZWRMaXN0OjpMaW5rZWRMaXN0KCkKewogIG5leHQg ICA9IE5VTEw7CiAgcHJldiAgID0gTlVMTDsKICBkYXRhICAgPSBOVUxMOwog IGVsbU51bSA9IDA7Cn0KCgpMaW5rZWRMaXN0OjpMaW5rZWRMaXN0KGNoYXIg c3RyaW5nW10pCnsKICBuZXh0ID0gTlVMTDsKICBwcmV2ID0gTlVMTDsKCiAg ZGF0YSA9IG5ldyBjaGFyWyBzdHJsZW4oc3RyaW5nKSsxIF07CiAgCiAgaWYo IGRhdGEgIT0gTlVMTCkKICAgIHN0cmNweShkYXRhLCBzdHJpbmcpOyAgCiAg Ly8gIGVsZW1lbnROdW1iZXIgPSBudW1iZXJFbGVtZW50cysrOwp9CgpMaW5r ZWRMaXN0OjpMaW5rZWRMaXN0KExpbmtlZExpc3QgKnByZXZpb3VzLCBMaW5r ZWRMaXN0ICpmb2xsb3dpbmcpCnsKICBuZXh0ID0gZm9sbG93aW5nOwogIHBy ZXYgPSBwcmV2aW91czsKCiAgLy8gIGxhc3QgPSB0aGlzOwp9CgpMaW5rZWRM aXN0Ojp+TGlua2VkTGlzdCgpCnsKICAvLyB0aGlzIHdpbGwgd29yayBpbiB0 d28gc3RhZ2VzCiAgLy8gMSkgZm9sbG93IHRoZSBwcmV2IHRvIHRoZSB0b3Ag YW5kIGRlbGV0ZSBmcm9tCiAgLy8gICAgdGhlcmUKICAvLyAyKSBmb2xsb3cg dGhlIG5leHQgdG8gdGhlIGJvdHRvbSBhbmQgZGVsZXRlIGZyb20KICAvLyAg ICB0aGVyZQoKICBpZiAoZGVsZXRlRGlyZWN0aW9uID09IDApCiAgICB7CiAg ICAgIGlmICggcHJldiAhPSBOVUxMICkKCXsKCSAgZGVsZXRlRGlyZWN0aW9u ID0gLTE7CgkgIGRlbGV0ZSBwcmV2OwoJfQogICAgICBpZiAoIG5leHQgIT0g TlVMTCApCgl7CgkgIGRlbGV0ZURpcmVjdGlvbiA9IDE7CgkgIGRlbGV0ZSBu ZXh0OwoJfQogICAgfQogIGVsc2UgaWYoIGRlbGV0ZURpcmVjdGlvbiA9PSAt MSApCiAgICAgIHsKCWlmICggcHJldiAhPSBOVUxMICkKCSAgZGVsZXRlIHBy ZXY7CiAgICAgIH0KICBlbHNlIGlmKCBkZWxldGVEaXJlY3Rpb24gPT0gMSAp CiAgICAgIHsKCWlmICggbmV4dCAhPSBOVUxMICkKCSAgZGVsZXRlIG5leHQ7 CiAgICAgIH0KCiAgZGVsZXRlW10gZGF0YTsKfQoKaW50IExpbmtlZExpc3Q6 OmFkZChjaGFyIHN0cmluZ1tdKQp7CiAgaWYgKCBkYXRhID09IE5VTEwgKQog ICAgewogICAgICBkYXRhID0gbmV3IGNoYXJbIHN0cmxlbihzdHJpbmcpKzEg XTsKCiAgICAgIGlmICggZGF0YSA9PSBOVUxMICkKCXJldHVybiBEQVRBRkFJ TFVSRTsKICAgICAgCiAgICAgIHN0cmNweShkYXRhLCBzdHJpbmcpOwogICAg ICByZXR1cm4gMDsKICAgIH0KCiAgTGlua2VkTGlzdCAqcG9pbnRlck9uZTsK ICBMaW5rZWRMaXN0ICpsaW5rOwogIAogIHBvaW50ZXJPbmUgPSB0aGlzLT5u ZXh0OwoKICBpZiAocG9pbnRlck9uZSAhPSBOVUxMKQogICAgbGluayA9IG5l dyBMaW5rZWRMaXN0KHBvaW50ZXJPbmUtPnByZXYsIHRoaXMtPm5leHQpOwog IGVsc2UKICAgIGxpbmsgPSBuZXcgTGlua2VkTGlzdCh0aGlzLCBOVUxMKTsK CiAgaWYgKCBsaW5rID09IE5VTEwgKQogICAgcmV0dXJuIExJTktGQUlMVVJF OwoKICBsaW5rLT5kYXRhID0gbmV3IGNoYXJbIHN0cmxlbihzdHJpbmcpKzEg XTsKICAKICBpZiAoIGxpbmstPmRhdGEgPT0gTlVMTCApCiAgICByZXR1cm4g REFUQUZBSUxVUkU7CiAKICBzdHJjcHkobGluay0+ZGF0YSwgc3RyaW5nKTsK CiAgdGhpcy0+bmV4dCA9IGxpbms7CgogIGlmIChwb2ludGVyT25lICE9IE5V TEwpCiAgICBwb2ludGVyT25lLT5wcmV2ID0gbGluazsKCiAgcmV0dXJuIDA7 Cn0KICAKY2hhciAqTGlua2VkTGlzdDo6c3RyaW5nKHZvaWQpCnsKICBjaGFy ICp0ZW1wPSBuZXcgY2hhcltzaXplb2YoZGF0YSkrMV07CgogIGlmICh0ZW1w ICE9IE5VTEwpCiAgICBzdHJjcHkodGVtcCwgZGF0YSk7CgogIHJldHVybiB0 ZW1wOwp9CgpMaW5rZWRMaXN0ICpMaW5rZWRMaXN0OjpuZXh0bGluaygpCnsK ICByZXR1cm4gbmV4dDsKfQoKdm9pZCBMaW5rZWRMaXN0Ojpzb3J0KHZvaWQp CnsKICBMaW5rZWRMaXN0ICp0b3AsICpib3R0b207ICAKICB0b3AgPSB0aGlz OyBib3R0b20gPSB0aGlzOwogIAogIC8vIGZpbmQgdGhlIHRvcCBsaW5rCiAg d2hpbGUgKCB0b3AtPnByZXYgIT0gTlVMTCApCiAgICB0b3AgPSB0b3AtPnBy ZXY7CgogIC8vIGZpbmQgdGhlIGJvdHRvbSBsaW5rCiAgd2hpbGUgKCBib3R0 b20tPm5leHQgIT0gTlVMTCApCiAgICBib3R0b20gPSBib3R0b20tPm5leHQ7 CiAgCiAgTGlua2VkTGlzdCAqcCA9IHRvcDsKICBpbnQgaSA9IDA7CgogIHAt PmVsbU51bSA9IGkrKzsKCiAgd2hpbGUgKCBwLT5uZXh0ICE9IE5VTEwpCiAg ICB7CiAgICAgIHAgPSBwLT5uZXh0OwogICAgICBwLT5lbG1OdW0gPSBpKys7 CiAgICB9CiAgCiAgcXVpY2tTb3J0KHRvcCwgYm90dG9tKTsKCn0KCnZvaWQg TGlua2VkTGlzdDo6cXVpY2tTb3J0KExpbmtlZExpc3QgKnN0YXJ0LCBMaW5r ZWRMaXN0ICplbmQpCnsKICBpZiAoIHN0YXJ0LT5lbG1OdW0gPCBlbmQgLT5l bG1OdW0gKQogICAgewogICAgICBMaW5rZWRMaXN0ICpzcGxpdCA9IHBhcnRp dGlvbihzdGFydCwgZW5kKTsKICAgICAgcXVpY2tTb3J0KHN0YXJ0LCBzcGxp dCk7CiAgICAgIHF1aWNrU29ydChzcGxpdC0+bmV4dCwgZW5kKTsKICAgIH0K fQoKTGlua2VkTGlzdCAqTGlua2VkTGlzdDo6cGFydGl0aW9uKExpbmtlZExp c3QgKnN0YXJ0LCBMaW5rZWRMaXN0ICAqZW5kKQp7CiAgTGlua2VkTGlzdCAq bGVmdCAgPSBzdGFydDsKICBMaW5rZWRMaXN0ICpyaWdodCA9IGVuZDsKCiAg Y2hhciAqcGl2b3QgPSBzdGFydC0+ZGF0YTsKCiAgd2hpbGUgKCByaWdodC0+ ZWxtTnVtID4gbGVmdC0+ZWxtTnVtICkKICAgIHsKICAgICAgd2hpbGUoIHN0 cmNtcChsZWZ0LT5kYXRhLCBwaXZvdCkgPCAwICkKCWxlZnQgPSBsZWZ0LT5u ZXh0OwogICAgICAKICAgICAgd2hpbGUoIHN0cmNtcChyaWdodC0+ZGF0YSwg cGl2b3QpID4gMCkKCXJpZ2h0ID0gcmlnaHQtPnByZXY7CgogICAgICBzd2Fw KGxlZnQtPmRhdGEsIHJpZ2h0LT5kYXRhKTsKICAgIH0KICBzd2FwKGxlZnQt PmRhdGEsIHJpZ2h0LT5kYXRhKTsKCiAgcmV0dXJuIHJpZ2h0Owp9Cgp2b2lk IExpbmtlZExpc3Q6OnN3YXAoY2hhciAqeCwgY2hhciAqeSkKewogIGNoYXIg KnRlbXA7CiAgdGVtcCA9IHg7CiAgeCA9IHk7CiAgeSA9IHRlbXA7Cn0KCgoK CnJ0aXRpb24oTGlua2VkTGlzdCAqc3RhcnQsIExpbmtlZExpc3QgICplbmQp CnsKICBMaW5rZWRMaXN0ICpsZWZ0ICA9IHN0YXJ0OwogIExpbmtlZExpc3Qg KnJpZ2h0ID0gZW5kOwoKICBjaGFyICpwaXZvdCA9IHN0YXJ0LT5kYXRhOwoK ICB3aGlsZSAoIHJpZ2h0LT5lbG1OdW0gPiBsZWZ0LT5lbG1OdW0gKQogICAg ewogICAgICB3aGlsZSggc3RyY21wKGxlZnQtPmRhdGEsIHBpdm90KSA8IDAg KQoJbGVmdCA9IGxlZnQtPm5leHQ7CiAgICAgIAogICAgICB3aGlsZSggc3Ry Y21wKHJpZ2h0LT5kYXRhLCBwaXZvdCkgPiAwKQoJcmlnaHQgPSByaWdodC0+ cHJldjsKCiAgICAgIHN3YXAobGVmdC0+ZGF0YSwgcmlnaHQtPmRhdGEpOwog ICAgfQogIHN3YXAobGVmdC0+ZGF0YSwgcmlnaHQtPmRhdGEpOwoKICByZXR1 cm4gcmlnaGtleXdvcmQuaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAwMDA2NDQgADAwMjIyMCAAMDAwMDI0IAAwMDAw MDAwMTYxNyAwNjM0NDYwNDM1NyAwMTMwNDUAIDAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIA MDB0cm9iYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzZXIAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwIAAwMDAwMDAgAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALy8gS2V5d29yZC5jYwojaWZuZGVm IEtFWVdPUkRTCiNkZWZpbmUgS0VZV09SRFMKCiNkZWZpbmUgTElOS0ZBSUxV UkUgLTEwCiNkZWZpbmUgREFUQUZBSUxVUkUgLTEyCgojZGVmaW5lIEZPVU5E ICAgIDEyCiNkZWZpbmUgTk9URk9VTkQgMTMKCmNsYXNzIExpbmtlZExpc3Qg ewpwdWJsaWM6CiAgTGlua2VkTGlzdCgpOwogIExpbmtlZExpc3QoY2hhciBz dHJpbmdbXSk7CiAgTGlua2VkTGlzdChMaW5rZWRMaXN0ICpwcmV2aW91cywg TGlua2VkTGlzdCAqZm9sbG93aW5nKTsKICB+TGlua2VkTGlzdCgpOwoKICBp bnQgYWRkKGNoYXIgc3RyaW5nW10pOwogIC8vaW50IHNlYXJjaChjaGFyIGNo ZWNrW10pOyAgCiAgY2hhciAqc3RyaW5nKHZvaWQpOwoKICBMaW5rZWRMaXN0 ICpuZXh0bGluaygpOwogIHZvaWQgc29ydCh2b2lkKTsKCnByaXZhdGU6CiAg dm9pZCBwcnVuZSh2b2lkKTsKICB2b2lkIHF1aWNrU29ydChMaW5rZWRMaXN0 ICpzdGFydCwgTGlua2VkTGlzdCAqZW5kKTsKICBMaW5rZWRMaXN0ICpwYXJ0 aXRpb24oTGlua2VkTGlzdCAqc3RhcnQsIExpbmtlZExpc3QgKmVuZCk7CiAg dm9pZCBzd2FwKGNoYXIgKngsIGNoYXIgKnkpOwoKICAvLyBMaW5rcwogIExp bmtlZExpc3QgKm5leHQ7CiAgTGlua2VkTGlzdCAqcHJldjsKCiAgLy8gUG9z aXRpb24gaXMgdXAsIG5lZ2F0aXZlIGlzIGRvd24KICBzdGF0aWMgaW50IGRl bGV0ZURpcmVjdGlvbjsKCiAgY2hhciAqZGF0YTsKCiAgLy8gRWxlbWVudCBO dW1iZXIsIG5lZWRlZCBmb3IgcXVpY2tTb3J0CiAgaW50IGVsbU51bTsKfTsK Ci8qCmNsYXNzIEtleXdvcmRTdHJpbmcgOiBwdWJsaWMgTGlua2VkTGlzdCB7 CnB1YmxpYzoKICBpbnQgc2VhcmNoKGNoYXIgbGluZVtdKTsKCnByaXZhdGU6 Cgp9CiovCiNlbmRpZgoKCgoKCgoKCgoKCgoKCgoKCgoKCgppZCBzb3J0KHZv aWQpOwoKcHJpdmF0ZToKICB2b2lkIHBydW5lKHZvaWQpOwogIHZvaWQgcXVp Y2tTb3J0KExpbmtlZExpc3QgKnN0YXJ0LCBMaW5rZWRMaXN0ICplbmQpOwog IExpbmtlZExpc3QgKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== ---1909242623-2067264171-865276009=:2912--