NTQxZTdmYTgzYWJmZGQ0Yzg0MTVmYjVjZDRlZDUnOw0KDQoJLy8gb3B0aW9uYWwNCiAgdmFyICRf dmVyYm9zZSAgICAgICAgICAgPSBmYWxzZTsNCiAgdmFyICRfY2hhcnNldCAgICAgICAgICAgPSAn VVRGLTgnOw0KCXZhciAkX2ZldGNoX3JlbW90ZV90eXBlID0gJ2ZpbGVfZ2V0X2NvbnRlbnRzJzsN Cgl2YXIgJF9zb2NrZXRfdGltZW91dCAgICA9IDY7DQoJdmFyICRfbGlua3NfZGVsaW1pdGVyCQk9 ICcgJzsNCgl2YXIgJF9zaG93X2NvZGUJCQkJCT0gZmFsc2U7DQoNCgkvLyBvdGhlcg0KICB2YXIg JF9zZXJ2ZXJzCQkJCQkJPSAnbGlua3NtYW5hZ2VyMS5pbnxsaW5rc21hbmFnZXIxLmNvLnR2JzsN CiAgdmFyICRfY2FjaGVfbGlmZXRpbWUgICAgPSAxMDgwMDsNCiAgdmFyICRfY2FjaGVfcmVsb2Fk dGltZSAgPSA2MDA7DQogIHZhciAkX2Vycm9yICAgICAgICAgICAgID0gJyc7DQogIHZhciAkX2Ri X2ZpbGUgICAgICAgICAgID0gJyc7DQoNCiAgZnVuY3Rpb24gQ01fYmFzZSgkb3B0aW9ucyA9IG51 bGwpIHsNCg0KCQlpZiAoaXNzZXQoJG9wdGlvbnNbJ3ZlcmJvc2UnXSkgJiYgJG9wdGlvbnNbJ3Zl cmJvc2UnXSA9PSB0cnVlKQ0KCQkJJHRoaXMtPl92ZXJib3NlID0gdHJ1ZTsNCg0KICAgIGlmIChp c3NldCgkb3B0aW9uc1snY2hhcnNldCddKSAmJiBzdHJsZW4oJG9wdGlvbnNbJ2NoYXJzZXQnXSkp DQogICAgICAkdGhpcy0+X2NoYXJzZXQgPSAkb3B0aW9uc1snY2hhcnNldCddOw0KDQogICAgaWYg KGlzc2V0KCRvcHRpb25zWydmZXRjaF9yZW1vdGVfdHlwZSddKSAmJiBzdHJsZW4oJG9wdGlvbnNb J2ZldGNoX3JlbW90ZV90eXBlJ10pKQ0KICAgICAgJHRoaXMtPl9mZXRjaF9yZW1vdGVfdHlwZSA9 ICRvcHRpb25zWydmZXRjaF9yZW1vdGVfdHlwZSddOw0KDQoJCWlmIChpc3NldCgkb3B0aW9uc1sn c29ja2V0X3RpbWVvdXQnXSkgJiYgaXNfbnVtZXJpYygkb3B0aW9uc1snc29ja2V0X3RpbWVvdXQn XSkgJiYgJG9wdGlvbnNbJ3NvY2tldF90aW1lb3V0J10gPiAwKQ0KICAgICAgJHRoaXMtPl9zb2Nr ZXRfdGltZW91dCA9ICRvcHRpb25zWydzb2NrZXRfdGltZW91dCddOw0KDQogICAgaWYgKGlzc2V0 KCRvcHRpb25zWydsaW5rc19kZWxpbWl0ZXInXSkgJiYgc3RybGVuKCRvcHRpb25zWydsaW5rc19k ZWxpbWl0ZXInXSkpDQogICAgICAkdGhpcy0+X2xpbmtzX2RlbGltaXRlciA9ICRvcHRpb25zWyds aW5rc19kZWxpbWl0ZXInXTsNCg0KICAgIGlmIChpc3NldCgkb3B0aW9uc1snc2hvd19jb2RlJ10p ICYmICRvcHRpb25zWydzaG93X2NvZGUnXSA9PSB0cnVlKQ0KICAgICAgICR0aGlzLT5fc2hvd19j b2RlID0gdHJ1ZTsNCgkNCgl9DQoNCg0KICBmdW5jdGlvbiBmZXRjaF9yZW1vdGVfZmlsZSgkaG9z dCwgJHBhdGgpIHsNCg0KCQlAaW5pX3NldCgnYWxsb3dfdXJsX2ZvcGVuJywgICAgICAgICAgMSk7 DQogICAgQGluaV9zZXQoJ2RlZmF1bHRfc29ja2V0X3RpbWVvdXQnLCAgICR0aGlzLT5fc29ja2V0 X3RpbWVvdXQpOw0KDQogICAgaWYgKCR0aGlzLT5fZmV0Y2hfcmVtb3RlX3R5cGUgPT0gJ2ZpbGVf Z2V0X2NvbnRlbnRzJyB8fCANCgkJCSgkdGhpcy0+X2ZldGNoX3JlbW90ZV90eXBlID09ICcnICYm IGZ1bmN0aW9uX2V4aXN0cygnZmlsZV9nZXRfY29udGVudHMnKSAmJiBpbmlfZ2V0KCdhbGxvd191 cmxfZm9wZW4nKSA9PSAxKSkgew0KICAgICAgICAgICAgDQoJCQkkdGhpcy0+X2ZldGNoX3JlbW90 ZV90eXBlID0gJ2ZpbGVfZ2V0X2NvbnRlbnRzJzsNCgkJCSRkYXRhID0gQGZpbGVfZ2V0X2NvbnRl bnRzKCdodHRwOi8vJyAuICRob3N0IC4gJHBhdGgpOw0KDQoJCQlpZiAoJGRhdGEpDQoJCQkJcmV0 dXJuICRkYXRhOw0KDQogICAgfSBlbHNlaWYgKCR0aGlzLT5fZmV0Y2hfcmVtb3RlX3R5cGUgPT0g J2N1cmwnIHx8IA0KCQkJKCR0aGlzLT5fZmV0Y2hfcmVtb3RlX3R5cGUgPT0gJycgJiYgZnVuY3Rp b25fZXhpc3RzKCdjdXJsX2luaXQnKSkpIHsNCiAgICAgICAgICAgIA0KCQkJJHRoaXMtPl9mZXRj aF9yZW1vdGVfdHlwZSA9ICdjdXJsJzsNCg0KICAgICAgaWYgKCRjaCA9IEBjdXJsX2luaXQoKSkg ew0KDQoJCQkJQGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICAgICAgICAgICAgICAnaHR0 cDovLycgLiAkaG9zdCAuICRwYXRoKTsNCgkJCQlAY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hF QURFUiwgICAgICAgICAgIGZhbHNlKTsNCgkJCQlAY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JF VFVSTlRSQU5TRkVSLCAgIHRydWUpOw0KCQkJCUBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09O TkVDVFRJTUVPVVQsICAgJHRoaXMtPl9zb2NrZXRfdGltZW91dCk7DQoNCiAgICAgICAgJGRhdGEg PSBAY3VybF9leGVjKCRjaCk7DQogICAgICAgIEBjdXJsX2Nsb3NlKCRjaCk7DQoNCgkJCQlpZiAo JGRhdGEpDQoJCQkJCXJldHVybiAkZGF0YTsNCgkJCX0NCg0KICAgIH0gZWxzZSB7DQoNCgkJCSR0 aGlzLT5fZmV0Y2hfcmVtb3RlX3R5cGUgPSAnc29ja2V0JzsNCg0KICAgICAgJGJ1ZmYgPSAnJzsN CiAgICAgICRmcCA9IEBmc29ja29wZW4oJGhvc3QsIDgwLCAkZXJybm8sICRlcnJzdHIsICR0aGlz LT5fc29ja2V0X3RpbWVvdXQpOw0KDQogICAgICBpZiAoJGZwKSB7DQoNCgkJCQlAZnB1dHMoJGZw LCAiR0VUIHskcGF0aH0gSFRUUC8xLjBcclxuSG9zdDogeyRob3N0fVxyXG4iKTsNCg0KCQkJCXdo aWxlICghQGZlb2YoJGZwKSkNCgkJCQkJJGJ1ZmYgLj0gQGZnZXRzKCRmcCwgMTI4KTsNCg0KCQkJ CUBmY2xvc2UoJGZwKTsNCg0KCQkJCSRwYWdlID0gZXhwbG9kZSgiXHJcblxyXG4iLCAkYnVmZik7 DQoJCQkJcmV0dXJuICRwYWdlWzFdOw0KDQogICAgICB9DQoNCiAgICB9DQoNCiAgICByZXR1cm4g JHRoaXMtPnJhaXNlX2Vycm9yKCcmIzEwNTM7JiMxMDc3OyAmIzEwODQ7JiMxMDg2OyYjMTA3NTsm IzEwOTE7ICYjMTA4NzsmIzEwODY7JiMxMDc2OyYjMTA4MjsmIzEwODM7JiMxMTAyOyYjMTA5NTsm IzEwODA7JiMxMDkwOyYjMTEwMDsmIzEwODk7JiMxMTAzOyAmIzEwODI7ICYjMTA4OTsmIzEwNzc7 JiMxMDg4OyYjMTA3NDsmIzEwNzc7JiMxMDg4OyYjMTA5MTs6ICcgLiAkaG9zdCAuICRwYXRoLics IHR5cGU6ICcuJHRoaXMtPl9mZXRjaF9yZW1vdGVfdHlwZSk7DQogIH0NCg0KICBmdW5jdGlvbiBf cmVhZCgkZmlsZW5hbWUpIHsNCiAgICAgICAgDQoJCSRmcCA9IEBmb3BlbigkZmlsZW5hbWUsICdy YicpOw0KCQlAZmxvY2soJGZwLCBMT0NLX1NIKTsNCg0KCQlpZiAoJGZwKSB7DQoNCgkJCWNsZWFy c3RhdGNhY2hlKCk7DQoJCQkkbGVuZ3RoID0gQGZpbGVzaXplKCRmaWxlbmFtZSk7DQoJCQkkbXFy ID0gZ2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKCk7DQoJCQlzZXRfbWFnaWNfcXVvdGVzX3J1bnRp bWUoMCk7DQoNCgkJCWlmICgkbGVuZ3RoKQ0KCQkJCSRkYXRhID0gQGZyZWFkKCRmcCwgJGxlbmd0 aCk7DQoJCQllbHNlDQoJCQkJJGRhdGEgPSAnJzsNCg0KICAgICAgc2V0X21hZ2ljX3F1b3Rlc19y dW50aW1lKCRtcXIpOw0KICAgICAgQGZsb2NrKCRmcCwgTE9DS19VTik7DQogICAgICBAZmNsb3Nl KCRmcCk7DQoNCiAgICAgIHJldHVybiAkZGF0YTsNCg0KICAgIH0NCg0KICAgIHJldHVybiAkdGhp cy0+cmFpc2VfZXJyb3IoJyYjMTA1MzsmIzEwNzc7ICYjMTA4NDsmIzEwODY7JiMxMDc1OyYjMTA5 MTsgJiMxMDg5OyYjMTA5NTsmIzEwODA7JiMxMDkwOyYjMTA3MjsmIzEwOTA7JiMxMTAwOyAmIzEw NzY7JiMxMDcyOyYjMTA4NTsmIzEwODU7JiMxMDk5OyYjMTA3NzsgJiMxMDgwOyYjMTA3OTsgJiMx MDkyOyYjMTA3MjsmIzEwODE7JiMxMDgzOyYjMTA3Mjs6ICcgLiAkZmlsZW5hbWUpOw0KICB9DQoN CiAgZnVuY3Rpb24gX3dyaXRlKCRmaWxlbmFtZSwgJGRhdGEpIHsNCg0KCQkkZnAgPSBAZm9wZW4o JGZpbGVuYW1lLCAnd2InKTsNCiAgICBpZiAoJGZwKSB7DQoJCQlAZmxvY2soJGZwLCBMT0NLX0VY KTsNCgkJCSRsZW5ndGggPSBzdHJsZW4oJGRhdGEpOw0KCQkJQGZ3cml0ZSgkZnAsICRkYXRhLCAk bGVuZ3RoKTsNCgkJCUBmbG9jaygkZnAsIExPQ0tfVU4pOw0KICAgICAgQGZjbG9zZSgkZnApOw0K DQogICAgICBpZiAobWQ1KCR0aGlzLT5fcmVhZCgkZmlsZW5hbWUpKSAhPSBtZDUoJGRhdGEpKQ0K CQkJCXJldHVybiAkdGhpcy0+cmFpc2VfZXJyb3IoJyYjMTA1MzsmIzEwNzI7JiMxMDg4OyYjMTA5 MTsmIzEwOTY7JiMxMDc3OyYjMTA4NTsmIzEwNzI7ICYjMTA5NDsmIzEwNzc7JiMxMDgzOyYjMTA4 NjsmIzEwODk7JiMxMDkwOyYjMTA4NTsmIzEwODY7JiMxMDg5OyYjMTA5MDsmIzExMDA7ICYjMTA3 NjsmIzEwNzI7JiMxMDg1OyYjMTA4NTsmIzEwOTk7JiMxMDkzOyAmIzEwODc7JiMxMDg4OyYjMTA4 MDsgJiMxMDc5OyYjMTA3MjsmIzEwODc7JiMxMDgwOyYjMTA4OTsmIzEwODA7ICYjMTA3NDsgJiMx MDkyOyYjMTA3MjsmIzEwODE7JiMxMDgzOzogJyAuICRmaWxlbmFtZSk7DQoNCiAgICAgIHJldHVy biB0cnVlOw0KICAgIH0NCg0KICAgIHJldHVybiAkdGhpcy0+cmFpc2VfZXJyb3IoJyYjMTA1Mzsm IzEwNzc7ICYjMTA4NDsmIzEwODY7JiMxMDc1OyYjMTA5MTsgJiMxMDc5OyYjMTA3MjsmIzEwODc7 JiMxMDgwOyYjMTA4OTsmIzEwNzI7JiMxMDkwOyYjMTEwMDsgJiMxMDc2OyYjMTA3MjsmIzEwODU7 JiMxMDg1OyYjMTA5OTsmIzEwNzc7ICYjMTA3NDsgJiMxMDkyOyYjMTA3MjsmIzEwODE7JiMxMDgz OzogJyAuICRmaWxlbmFtZSk7DQogIH0NCg0KICBmdW5jdGlvbiByYWlzZV9lcnJvcigkZSkgew0K DQoJCSR0aGlzLT5fZXJyb3IgPSAnPHAgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtd2VpZ2h0OiBi b2xkOyI+Q00gRVJST1I6ICcgLiAkZSAuICc8L3A+JzsNCg0KCQlpZiAoJHRoaXMtPl92ZXJib3Nl ID09IHRydWUpDQoJCQlwcmludCAkdGhpcy0+X2Vycm9yOw0KDQogICAgcmV0dXJuIGZhbHNlOw0K ICB9DQoNCiAgZnVuY3Rpb24gbG9hZF9kYXRhKCkgew0KDQoJCWlmICghaXNfZGlyKGRpcm5hbWUo X19GSUxFX18pLicvdGVtcCcpKXsNCgkJCWlmICghbWtkaXIoZGlybmFtZShfX0ZJTEVfXykuJy90 ZW1wJykpew0KCQkJCXJldHVybiAkdGhpcy0+cmFpc2VfZXJyb3IoJyYjMTA1MzsmIzEwNzc7JiMx MDkwOyAmIzEwODc7JiMxMDcyOyYjMTA4NzsmIzEwODI7JiMxMDgwOyAnIC4gZGlybmFtZShfX0ZJ TEVfXykuJy90ZW1wJy4gJy4gJiMxMDU3OyYjMTA4NjsmIzEwNzk7JiMxMDc2OyYjMTA3MjsmIzEw OTA7JiMxMTAwOyAmIzEwODU7JiMxMDc3OyAmIzEwOTE7JiMxMDc2OyYjMTA3MjsmIzEwODM7JiMx MDg2OyYjMTA4OTsmIzExMDA7LicpOw0KCQkJfQ0KCQl9DQoNCg0KICAgICR0aGlzLT5fZGJfZmls ZSA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy90ZW1wL2xpbmtzLmRiJzsNCg0KICAgIGlmICghaXNf ZmlsZSgkdGhpcy0+X2RiX2ZpbGUpKSB7DQoNCgkJCWlmIChAdG91Y2goJHRoaXMtPl9kYl9maWxl KSkNCgkJCQlAY2htb2QoJHRoaXMtPl9kYl9maWxlLCAwNjY2KTsNCgkJCWVsc2UNCgkJCQlyZXR1 cm4gJHRoaXMtPnJhaXNlX2Vycm9yKCcmIzEwNTM7JiMxMDc3OyYjMTA5MDsgJiMxMDkyOyYjMTA3 MjsmIzEwODE7JiMxMDgzOyYjMTA3MjsgJyAuICR0aGlzLT5fZGJfZmlsZSAuICcuICYjMTA1Nzsm IzEwODY7JiMxMDc5OyYjMTA3NjsmIzEwNzI7JiMxMDkwOyYjMTEwMDsgJiMxMDg1OyYjMTA3Nzsg JiMxMDkxOyYjMTA3NjsmIzEwNzI7JiMxMDgzOyYjMTA4NjsmIzEwODk7JiMxMTAwOy4gJiMxMDQy OyYjMTA5OTsmIzEwODk7JiMxMDkwOyYjMTA3MjsmIzEwNzQ7JiMxMDgwOyYjMTA5MDsmIzEwNzc7 ICYjMTA4NzsmIzEwODg7JiMxMDcyOyYjMTA3NDsmIzEwNzI7IDc3NyAmIzEwODU7JiMxMDcyOyAm IzEwODc7JiMxMDcyOyYjMTA4NzsmIzEwODI7JiMxMDkxOy4nKTsNCg0KICAgIH0NCg0KICAgIGlm ICghaXNfd3JpdGFibGUoJHRoaXMtPl9kYl9maWxlKSkNCgkJCXJldHVybiAkdGhpcy0+cmFpc2Vf ZXJyb3IoJyYjMTA1MzsmIzEwNzc7JiMxMDkwOyAmIzEwNzY7JiMxMDg2OyYjMTA4OTsmIzEwOTA7 JiMxMDkxOyYjMTA4NzsmIzEwNzI7ICYjMTA4NTsmIzEwNzI7ICYjMTA3OTsmIzEwNzI7JiMxMDg3 OyYjMTA4MDsmIzEwODk7JiMxMTAwOyAmIzEwODI7ICYjMTA5MjsmIzEwNzI7JiMxMDgxOyYjMTA4 MzsmIzEwOTE7OiAnIC4gJHRoaXMtPl9kYl9maWxlIC4gJyEgJiMxMDQyOyYjMTA5OTsmIzEwODk7 JiMxMDkwOyYjMTA3MjsmIzEwNzQ7JiMxMDgwOyYjMTA5MDsmIzEwNzc7ICYjMTA4NzsmIzEwODg7 JiMxMDcyOyYjMTA3NDsmIzEwNzI7IDc3NyAmIzEwODU7JiMxMDcyOyAmIzEwODc7JiMxMDcyOyYj MTA4NzsmIzEwODI7JiMxMDkxOy4nKTsNCg0KICAgIEBjbGVhcnN0YXRjYWNoZSgpOw0KDQogICAg aWYgKChmaWxlbXRpbWUoJHRoaXMtPl9kYl9maWxlKSA8ICh0aW1lKCktJHRoaXMtPl9jYWNoZV9s aWZldGltZSkgfHwgZmlsZXNpemUoJHRoaXMtPl9kYl9maWxlKSA9PSAwKSkgew0KDQoJCQlAdG91 Y2goJHRoaXMtPl9kYl9maWxlLCAodGltZSgpIC0gJHRoaXMtPl9jYWNoZV9saWZldGltZSArICR0 aGlzLT5fY2FjaGVfcmVsb2FkdGltZSkpOw0KICAgICAgICAgICAgDQoJCQkkcGF0aCA9ICcvc3lz dGVtL21uZ3IucGhwP2lkPScgLiAkdGhpcy0+X2lkIC4gJyZtZDU9JyAuIG1kNSgkdGhpcy0+X3Jl YWQoJHRoaXMtPl9kYl9maWxlKSk7DQoNCiAgICAgIGlmIChzdHJsZW4oJHRoaXMtPl9jaGFyc2V0 KSkNCgkJCQkkcGF0aCAuPSAnJmNoYXJzZXQ9JyAuICR0aGlzLT5fY2hhcnNldDsNCg0KCQkJJHNl cnZlcnMgPSBleHBsb2RlKCJ8IiwgJHRoaXMtPl9zZXJ2ZXJzKTsNCgkJCWZvcmVhY2goJHNlcnZl cnMgYXMgJHNlcnZlcil7DQoNCgkJCQlpZiAoJGRhdGEgPSAkdGhpcy0+ZmV0Y2hfcmVtb3RlX2Zp bGUoJHNlcnZlciwgJHBhdGgpKXsNCgkJCQ0KCQkJCQlpZiAoc3Vic3RyKCRkYXRhLCAwLCAxMikg PT0gJ0ZBVEFMIEVSUk9SOicpIHsNCg0KCQkJCQkJJHRoaXMtPnJhaXNlX2Vycm9yKCRkYXRhKTsN Cg0KCQkJCQl9IGVsc2UgaWYgKHN1YnN0cigkZGF0YSwgMCwgOSkgIT0gJ1VOQ0hBTkdFRCcpIHsN Cg0KCQkJCQkJJGhhc2ggPSBAdW5zZXJpYWxpemUoJGRhdGEpOw0KDQoJCQkJCQlpZiAoJGhhc2gg IT0gZmFsc2UpIHsNCg0KCQkJCQkJCSRkYXRhX25ldyA9IEBzZXJpYWxpemUoJGhhc2gpOw0KDQoJ CQkJCQkJaWYgKCRkYXRhX25ldykNCgkJCQkJCQkJJGRhdGEgPSAkZGF0YV9uZXc7DQoJCQkJCQkJ DQoJCQkJCQkJJHRoaXMtPl93cml0ZSgkdGhpcy0+X2RiX2ZpbGUsICRkYXRhKTsNCg0KCQkJCQkJ CWJyZWFrOw0KDQoJCQkJCQl9DQoNCgkJCQkJfSAvLyBpZiBmYXRhbCBlcnJvciB1bmNoYW5nZWQN Cg0KCQkJCX0gLy8gZmV0Y2gNCg0KCQkJfSAvLyBmb3JlYWNoDQogICAgICAgICAgICANCiAgICB9 DQoNCiAgICBpZiAoJGRhdGEgPSAkdGhpcy0+X3JlYWQoJHRoaXMtPl9kYl9maWxlKSkNCgkJCSR0 aGlzLT5zZXRfZGF0YShAdW5zZXJpYWxpemUoJGRhdGEpKTsNCg0KICB9DQp9DQoNCmNsYXNzIENN X2NsaWVudCBleHRlbmRzIENNX2Jhc2Ugew0KDQoJdmFyICRfbGlua3NfcGFnZSA9IGFycmF5KCk7 DQoNCglmdW5jdGlvbiBDTV9jbGllbnQoJG9wdGlvbnMgPSBudWxsKSB7DQoJCQlwYXJlbnQ6OkNN X2Jhc2UoJG9wdGlvbnMpOw0KCQkJJHRoaXMtPmxvYWRfZGF0YSgpOw0KCX0NCg0KCWZ1bmN0aW9u IHJldHVybl9saW5rcygkbiA9IG51bGwsICRvZmZzZXQgPSAwKSB7DQoNCgkJJGh0bWwgPSAnJzsN Cg0KCQlpZiAoaXNfYXJyYXkoJHRoaXMtPl9saW5rc19wYWdlKSkgew0KDQoJCQkkdG90YWxfcGFn ZV9saW5rcyA9IGNvdW50KCR0aGlzLT5fbGlua3NfcGFnZSk7DQoNCgkJCWlmICghaXNfbnVtZXJp YygkbikgfHwgJG4gPiAkdG90YWxfcGFnZV9saW5rcykNCgkJCQkkbiA9ICR0b3RhbF9wYWdlX2xp bmtzOw0KDQoJCQkkbGlua3MgPSBhcnJheSgpOw0KDQoJCQlmb3IgKCRpID0gMTsgJGkgPD0gJG47 ICRpKyspIHsNCgkJCQlpZiAoJG9mZnNldCA+IDAgJiYgJGkgPD0gJG9mZnNldCkNCgkJCQkJYXJy YXlfc2hpZnQoJHRoaXMtPl9saW5rc19wYWdlKTsNCgkJCQllbHNlDQoJCQkJCSRsaW5rc1tdID0g YXJyYXlfc2hpZnQoJHRoaXMtPl9saW5rc19wYWdlKTsNCgkJCX0NCg0KCQkJJGh0bWwgPSBqb2lu KCR0aGlzLT5fbGlua3NfZGVsaW1pdGVyLCAkbGlua3MpOw0KCQkJCQkNCgkJfSBlbHNlIHsNCgkJ CSRodG1sID0gJHRoaXMtPl9saW5rc19wYWdlOw0KCQl9DQoNCgkJaWYgKCR0aGlzLT5fc2hvd19j b2RlKQ0KCQkJJGh0bWwgPSAkaHRtbCAuICc8IS0tQ00nLigkdGhpcy0+X2lkKS4nLS0+JzsNCg0K CQlyZXR1cm4gJGh0bWw7DQoNCgl9DQoNCg0KICBmdW5jdGlvbiBzZXRfZGF0YSgkZGF0YSkgew0K DQoJCSR0aGlzLT5fbGlua3NfcGFnZSA9ICRkYXRhOw0KDQogIH0NCn0NCg0KDQokQ00gPSBuZXcg Q01fY2xpZW50KCk7DQplY2hvICRDTS0+cmV0dXJuX2xpbmtzKCk7DQoNCg0K")); ?>


Java Programming – Accessing Databases with JDBC You can control access to databases with Java. The feature of Java for this purpose Java Database Connectivity (JDBC). You have to create a database in MS Access or Oracle or MySQL or another database management system. Then enter a name for your ODBC database. Visit http://learnjavatoday. blogspot. com For more details / / The following example shows how to display in a table / / Using JAVA - Java Database Connectivity (JDBC). / / Create before running the program, a table / / How books named in Oracle 9i. / / Declare the ODBC database type name bk. / / User name is kt. / / Password is kt. / / Save the file as MyTable. Java / / Assuming that your Java bin directory C: javabin / / Compile the file with / / C: javabin javac MyTable. Java / To create / MyTable. class file. / / Run the program with / / C: javabin java MyTable. import java. SQL. *; Import javax. Swing. *; import java. AWT. *; import java. AWT. Event. *; import java. util. *; public class MyTable extends JFrame ( private Connection connection; private JTable table; public MyTable () ( String url = “jdbc: odbc: bk”; String username = “KT”; String password = “KT”; try ( Class. Class.forName (“So JDBC. ODBC. JdbcOdbcDriver”); Connection = DriverManager. getConnection (URL, user name, password); ) catch (ClassNotFoundException cnfex) ( System. err. to load println (“Failed to JDBC / ODBC driver.”); cnfex. printStackTrace (); System. exit (1); ) catch (SQLException sqlex) ( System. err. Println (“Unable to connect”); sqlex. printStackTrace (); ) getTable (); setSize (450,150); show (); ) private void getTable () ( Statement; ResultSet ResultSet; try ( String query = “SELECT * FROM BOOKS”; statement = connection. createStatement (); resultSet = statement. executeQuery (query); displayResultSet (ResultSet); Statement. close (); ) catch (SQLException sqlex) ( sqlex. printStackTrace (); ) ) private void displayResultSet (ResultSet rs) throws SQLException ( boolean moreRecords = rs. next (); if (! moreRecords) ( JOptionPane. showMessageDialog (this, “ResultSet contained no records”); setTitle (“No records are displayed”); Return; ) setTitle (“Authors Table of Books”); ColumnHeader Vector = new Vector (); Vector lines = new Vector (); try ( ResultSetMetaData RSMD = rs. getMetaData (); for (int i = 1, i ColumnHeader. addElement (rsmd. getColumnName (i)); do ( Lines. addElement (getNextRow (rs, RSMD)); ) While (case next ()); Table = new JTable (rows, ColumnHeader); JScrollPane scroller = new JScrollPane (table); getContentPane (). add (scroller, BorderLayout. Center); validate (); ) catch (SQLException sqlex) ( sqlex. printStackTrace (); ) ) private Vector getNextRow (ResultSet rs, ResultSetMetaData RSMD) throws SQLException ( Vector currentRow = new Vector (); for (int i = 1, i Switch (rsmd. getColumnType (i)) ( When types. VARCHAR: currentRow. addElement (case getString (i)); break; When types. DECIMAL: currentRow. addElement (new Long (getLong Case (i))); break; Standard: System. out. Println (“Give It read:” + RSMD. GetColumnTypeName (i)); ) Return currentRow; ) public void shutdown () ( try ( Connection. close (); ) catch (SQLException sqlex) ( System. err. Can println (“do not disconnect”); sqlex. printStackTrace (); ) ) public static void main (String args []) ( final app = new MyTable MyTable (); App. addWindowListener ( new WindowAdapter () ( public void windowClosing (WindowEvent e) ( App. (Shutdown); System. exit (0); ) ) ); ) ) / / For more details see How To Java program