From - Wed Nov 24 09:43:03 1999 Received: from newton.math.grin.edu ([132.161.33.70]) by EXCHANGESERVER with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2448.0) id XHVQTAJ9; Mon, 22 Nov 1999 20:26:10 -0600 Received: from EXCHANGESERVER (grinnell.edu.10.161.132.IN-ADDR.ARPA [132.161.10.18] (may be forged)) by newton.math.grin.edu (8.8.8/8.8.8) with ESMTP id UAA25409 for ; Mon, 22 Nov 1999 20:26:09 -0600 (CST) Received: from webmail.grinnell.edu (webmailsrvr.grinnell.edu [132.161.10.61]) by EXCHANGESERVER with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2448.0) id XHVQTAJ7; Mon, 22 Nov 1999 20:26:09 -0600 Message-Id: <199911230226.UAA25409@newton.math.grin.edu> Date: Mon, 22 Nov 1999 20:27:20 -0600 Sender: Jeremy Barton From: Jeremy Barton To: Samuel Rebelsky X-EXP32-SerialNo: 00002379 Subject: RE: New files ... Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="mime-boundary-interchange-383a19ab" X-Mailer: WebMail (Hydra) SMTP v3.51 This is the preamble of a multipart MIME formatted message. If you are reading this text your mail system is most likely not capable of properly decoding MIME messages. To extract the contents of this message, save it to a file and then use an external MIME decoding utility. --mime-boundary-interchange-383a19ab Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit >===== Original Message From Samuel Rebelsky ===== >Good job on your presentations. The other CS faculty were quite >impressed. > >Please email me the current versions of your files so that I can make >them available to the rest of the group. > >-- SamR Alright. Here they are as presented. Jeremy --mime-boundary-interchange-383a19ab Content-Type: application/octet-stream; name="Compose.java" Content-disposition: attachment; filename="Compose.java" Content-Transfer-Encoding: BASE64 aW1wb3J0IGphdmEuYXd0Lio7DQppbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsNCmltcG9ydCBqYXZh LnV0aWwuKjsNCg0KcHVibGljIGNsYXNzIENvbXBvc2UgZXh0ZW5kcyBXaW5kb3dBZGFwdGVyIGlt cGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgDQogew0KDQovLyAgKy0tLS0tLS0tKw0KLy8gIHwgRmll bGRzIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KLy8gICstLS0tLS0tLSsNCg0KICAvKiogR1VJIGZpZWxkcyAqLw0KICBwcm90ZWN0ZWQgR3Jp ZEJhZ0xheW91dCBncmlkOw0KICBwcm90ZWN0ZWQgTGFiZWwgR21haWw7DQogIHByb3RlY3RlZCBU ZXh0RmllbGQgR1VJdG87DQogIHByb3RlY3RlZCBUZXh0RmllbGQgR1VJY2M7DQogIHByb3RlY3Rl ZCBUZXh0RmllbGQgR1VJYmNjOw0KICBwcm90ZWN0ZWQgVGV4dEZpZWxkIEdVSXN1YmplY3Q7DQog IHByb3RlY3RlZCBUZXh0QXJlYSBHVUlCb2R5Ow0KICBwcm90ZWN0ZWQgQnV0dG9uIHNlbmQ7DQog IHByb3RlY3RlZCBCdXR0b24gY2xlYXI7DQogIHByb3RlY3RlZCBCdXR0b24gcXVpdDsNCiAgcHJv dGVjdGVkIEJ1dHRvbiB1c2VIVE1MOw0KICBwcm90ZWN0ZWQgQnV0dG9uIGFkZFRhZ3M7DQogIHBy b3RlY3RlZCBCdXR0b24gYXR0YWNoOw0KICBwcm90ZWN0ZWQgUGFuZWwgZ3VpOw0KICBwcm90ZWN0 ZWQgRnJhbWUgZnJhbWU7DQogIHByb3RlY3RlZCBib29sZWFuIGh0bWwgPSBmYWxzZTsNCiAgcHJv dGVjdGVkIFN0cmluZyBib2R5U3RyaW5nOw0KICBwcm90ZWN0ZWQgRWRpdEhUTUwgbmV3SFRNTDsN CiAgcHJvdGVjdGVkIFN0cmluZyB0YWdzX1RvX0FkZDsNCg0KLy8gKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIHwgQ29uc3RydWN0b3IgfA0KLy8gKy0t LS0tLS0tLS0tLS0rDQoNCiAgcHVibGljIENvbXBvc2UoKXsNCiAgICBmcmFtZSA9IG5ldyBGcmFt ZSgiR21haWwgQ29tcG9zZSIpOw0KICAgIGZyYW1lLmFkZFdpbmRvd0xpc3RlbmVyKHRoaXMpOw0K ICAgIGd1aSA9IG5ldyBQYW5lbCgpOw0KICAgIEdyaWRCYWdDb25zdHJhaW50cyBjID0gbmV3IEdy aWRCYWdDb25zdHJhaW50cygpOw0KICAgIEdyaWRCYWdMYXlvdXQgZ3JpZCA9IG5ldyBHcmlkQmFn TGF5b3V0KCk7DQogICAgZ3VpLnNldExheW91dChncmlkKTsNCiAgICBHbWFpbCA9IG5ldyBMYWJl bCgiR01haWwgQ29tcG9zZSBXaW5kb3ciKTsNCiAgICBMYWJlbCBsVG8gPSBuZXcgTGFiZWwoIlRv OiAgICAgICIpOw0KICAgIExhYmVsIGxDYyA9IG5ldyBMYWJlbCgiQ0M6ICAgICAgIik7DQogICAg TGFiZWwgbEJjYyA9IG5ldyBMYWJlbCgiQkNDOiAgICAgIik7DQogICAgTGFiZWwgbFN1YmplY3Qg PSBuZXcgTGFiZWwoIlN1YmplY3Q6ICIpOw0KICAgIHVzZUhUTUwgPSBuZXcgQnV0dG9uKCJIVE1M Iik7DQogICAgYWRkVGFncyA9IG5ldyBCdXR0b24oIkFkZCBUYWdzIik7DQogICAgYXR0YWNoID0g bmV3IEJ1dHRvbigiQXR0YWNobWVudHMiKTsNCiAgICBMYWJlbCBhdHRhY2hsID0gbmV3IExhYmVs KCJObyBBdHRhY2htZW50cyIpOw0KICAgIEdVSXRvID0gbmV3IFRleHRGaWVsZCgpOw0KICAgIEdV SWNjID0gbmV3IFRleHRGaWVsZCgpOw0KICAgIEdVSWJjYyA9IG5ldyBUZXh0RmllbGQoKTsNCiAg ICBHVUlzdWJqZWN0ID0gbmV3IFRleHRGaWVsZCgpOw0KICAgIEdVSUJvZHkgPSBuZXcgVGV4dEFy ZWEoKTsNCiAgICBzZW5kID0gbmV3IEJ1dHRvbigiU2VuZCIpOw0KICAgIGNsZWFyID0gbmV3IEJ1 dHRvbigiQ2xlYXIiKTsNCiAgICBxdWl0ID0gbmV3IEJ1dHRvbigiQ2xvc2UiKTsNCiAgICBzZW5k LmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOw0KICAgIGNsZWFyLmFkZEFjdGlvbkxpc3RlbmVyKHRo aXMpOw0KICAgIHF1aXQuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7DQogICAgYy5hbmNob3I9R3Jp ZEJhZ0NvbnN0cmFpbnRzLk5PUlRIOw0KICAgIGMuZ3JpZHggPSAwOw0KICAgIGMuZ3JpZHkgPSAw Ow0KICAgIGMuZmlsbD1HcmlkQmFnQ29uc3RyYWludHMuQk9USDsNCiAgICBjLmdyaWR3aWR0aD1H cmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSOw0KICAgIGdyaWQuc2V0Q29uc3RyYWludHMoR21h aWwsIGMpOw0KICAgIGd1aS5hZGQoR21haWwpOw0KICAgIGMuZ3JpZHkgPSAxOw0KICAgIGMuZ3Jp ZHdpZHRoPTE7DQogICAgZ3JpZC5zZXRDb25zdHJhaW50cyhsVG8sIGMpOw0KICAgIGd1aS5hZGQo bFRvKTsNCiAgICBjLmdyaWR4PTE7DQogICAgYy53ZWlnaHR4PTEuMDsNCiAgICBjLmdyaWR3aWR0 aD1HcmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSOw0KICAgIGdyaWQuc2V0Q29uc3RyYWludHMo R1VJdG8sIGMpOw0KICAgIGd1aS5hZGQoR1VJdG8pOw0KICAgIGMuZ3JpZHk9MjsNCiAgICBjLmdy aWR4PTA7DQogICAgYy5ncmlkd2lkdGg9MTsNCiAgICBjLndlaWdodHg9MDsNCiAgICBncmlkLnNl dENvbnN0cmFpbnRzKGxDYywgYyk7DQogICAgZ3VpLmFkZChsQ2MpOw0KICAgIGMuZ3JpZHg9MTsN CiAgICBjLndlaWdodHg9MS4wOw0KICAgIGMuZ3JpZHdpZHRoPUdyaWRCYWdDb25zdHJhaW50cy5S RU1BSU5ERVI7DQogICAgZ3JpZC5zZXRDb25zdHJhaW50cyhHVUljYywgYyk7DQogICAgZ3VpLmFk ZChHVUljYyk7DQogICAgYy5ncmlkeT0zOw0KICAgIGMuZ3JpZHg9MDsNCiAgICBjLmdyaWR3aWR0 aD0xOw0KICAgIGMud2VpZ2h0eD0wOw0KICAgIGdyaWQuc2V0Q29uc3RyYWludHMobEJjYywgYyk7 DQogICAgZ3VpLmFkZChsQmNjKTsNCiAgICBjLmdyaWR4PTE7DQogICAgYy53ZWlnaHR4PTEuMDsN CiAgICBjLmdyaWR3aWR0aD1HcmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSOw0KICAgIGdyaWQu c2V0Q29uc3RyYWludHMoR1VJYmNjLCBjKTsNCiAgICBndWkuYWRkKEdVSWJjYyk7DQogICAgYy5n cmlkeT00Ow0KICAgIGMuZ3JpZHg9MDsNCiAgICBjLmdyaWR3aWR0aD0xOw0KICAgIGMud2VpZ2h0 eD0wOw0KICAgIGdyaWQuc2V0Q29uc3RyYWludHMobFN1YmplY3QsIGMpOw0KICAgIGd1aS5hZGQo bFN1YmplY3QpOw0KICAgIGMuZ3JpZHg9MTsNCiAgICBjLndlaWdodHg9MS4wOw0KICAgIGMuZ3Jp ZHdpZHRoPUdyaWRCYWdDb25zdHJhaW50cy5SRU1BSU5ERVI7DQogICAgZ3JpZC5zZXRDb25zdHJh aW50cyhHVUlzdWJqZWN0LCBjKTsNCiAgICBndWkuYWRkKEdVSXN1YmplY3QpOw0KDQogICAgUGFu ZWwgZ3VpMyA9IG5ldyBQYW5lbCgpOw0KICAgIGMuYW5jaG9yPUdyaWRCYWdDb25zdHJhaW50cy5X RVNUOw0KICAgIGMud2VpZ2h0eD0wLjA7DQogICAgYy53ZWlnaHR5PTAuMDsNCiAgICBjLmdyaWR4 PTA7DQogICAgYy5ncmlkeT0wOw0KICAgIEdyaWRCYWdMYXlvdXQgZ3JpZDMgPSBuZXcgR3JpZEJh Z0xheW91dCgpOw0KICAgIGd1aTMuc2V0TGF5b3V0KGdyaWQzKTsNCiAgICBncmlkLnNldENvbnN0 cmFpbnRzKHVzZUhUTUwsIGMpOw0KICAgIGd1aTMuYWRkKHVzZUhUTUwpOw0KICAgIHVzZUhUTUwu YWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7DQogICAgDQogICAgYy5ncmlkeD0xOw0KICAgIGdyaWQu c2V0Q29uc3RyYWludHMoYWRkVGFncywgYyk7DQogICAgZ3VpMy5hZGQoYWRkVGFncyk7DQogICAg YWRkVGFncy5zZXRWaXNpYmxlKCB0cnVlICk7DQogICAgYWRkVGFncy5hZGRBY3Rpb25MaXN0ZW5l cih0aGlzKTsNCg0KICAgIGMuZ3JpZHg9MjsNCiAgICBjLndlaWdodHg9MC4wOw0KICAgIGMuZ3Jp ZHdpZHRoPTE7DQogICAgZ3JpZDMuc2V0Q29uc3RyYWludHMoYXR0YWNoLCBjKTsNCiAgICBndWkz LmFkZChhdHRhY2gpOw0KICAgIGMuZ3JpZHg9MzsNCiAgICBjLndlaWdodHg9MS4wOw0KICAgIGMu aW5zZXRzID0gbmV3IEluc2V0cygwLCA1LCAwLCAwKTsNCiAgICBncmlkMy5zZXRDb25zdHJhaW50 cyhhdHRhY2hsLCBjKTsNCiAgICBndWkzLmFkZChhdHRhY2hsKTsNCiAgICBjLmdyaWR5PTU7DQog ICAgYy5ncmlkeD0wOw0KICAgIGMud2VpZ2h0eD0wLjA7DQogICAgYy5ncmlkd2lkdGg9R3JpZEJh Z0NvbnN0cmFpbnRzLlJFTUFJTkRFUjsNCiAgICBncmlkLnNldENvbnN0cmFpbnRzKGd1aTMsIGMp Ow0KICAgIGd1aS5hZGQoZ3VpMyk7DQoNCiAgICBjLmdyaWR5PTY7DQogICAgYy53ZWlnaHR5PTEu MDsNCiAgICBjLmdyaWR4PTA7DQogICAgYy53ZWlnaHR4PTEuMDsNCiAgICBjLmdyaWR3aWR0aD1H cmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSOw0KICAgIGdyaWQuc2V0Q29uc3RyYWludHMoR1VJ Qm9keSwgYyk7DQogICAgZ3VpLmFkZChHVUlCb2R5KTsNCiAgICBQYW5lbCBndWkyID0gbmV3IFBh bmVsKCk7DQogICAgR3JpZEJhZ0xheW91dCBncmlkMiA9IG5ldyBHcmlkQmFnTGF5b3V0KCk7DQog ICAgZ3VpMi5zZXRMYXlvdXQoZ3JpZDIpOw0KICAgIGMuZ3JpZHdpZHRoPTE7DQogICAgYy5ncmlk eT0wOw0KICAgIGMuZ3JpZHg9MTsNCiAgICBjLndlaWdodHk9MDsNCiAgICBjLmZpbGw9R3JpZEJh Z0NvbnN0cmFpbnRzLk5PTkU7DQogICAgZ3JpZDIuc2V0Q29uc3RyYWludHMoc2VuZCxjKTsNCiAg ICBndWkyLmFkZChzZW5kKTsNCiAgICBjLmdyaWR4PTI7DQogICAgZ3JpZDIuc2V0Q29uc3RyYWlu dHMoY2xlYXIsIGMpOw0KICAgIGd1aTIuYWRkKGNsZWFyKTsNCiAgICBjLmdyaWR4PTM7DQogICAg Z3JpZDIuc2V0Q29uc3RyYWludHMocXVpdCwgYyk7DQogICAgZ3VpMi5hZGQocXVpdCk7DQoNCiAg ICBjLmdyaWR5PTc7DQogICAgYy5ncmlkeD0xOw0KICAgIGMud2VpZ2h0eT0wOw0KICAgIGMud2Vp Z2h0eD0wOw0KICAgIGMuYW5jaG9yPUdyaWRCYWdDb25zdHJhaW50cy5TT1VUSDsNCiAgICBncmlk LnNldENvbnN0cmFpbnRzKGd1aTIsIGMpOw0KICAgIGd1aS5hZGQoZ3VpMik7DQogICAgZnJhbWUu YWRkKGd1aSk7DQogICAgZnJhbWUucGFjaygpOw0KICAgIGZyYW1lLnNob3coKTsNCiAgICB9DQoN Ci8vICArLS0tLS0tLS0tLS0tLS0tLSsNCi8vICB8IEV2ZW50IEhhbmRsZXJzIHwtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAgKy0tLS0tLS0tLS0t LS0tLS0rDQoNCiAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGV2dCl7 DQogICAgU3RyaW5nIGNvbW1hbmQgPSBldnQuZ2V0QWN0aW9uQ29tbWFuZCgpOw0KDQogICAgaWYg KGNvbW1hbmQuZXF1YWxzKCJDbG9zZSIpKSB7DQogICAgICBmcmFtZS5kaXNwb3NlKCk7DQogICAg ICBTeXN0ZW0uZXhpdCgwKTsNCiAgICB9DQoNCiAgICAgaWYgKGNvbW1hbmQuZXF1YWxzKCJIVE1M IikpIHsNCiAgICAgICAgIGJvZHlTdHJpbmcgPSBHVUlCb2R5LmdldFRleHQoKTsNCiAgICAgICAg IEdVSUJvZHkuc2V0VGV4dCgoIjxIVE1MPiIgKyAiXG4iICsgIjxIRUFERVI+IiArICJcbiIgKyAi PC9IRUFERVI+IiArICJcbiIgKyAiXG4iICsgIjxCT0RZPiIgKyAiXG4iICsgIjxwPiIgKyBHVUlC b2R5LmdldFRleHQoKSArICJcbiIgKyAiPC9CT0RZPiIgKyAiXG4iICsgIlxuIiArICI8L0hUTUw+ IikpOw0KICAgICAgICAgbmV3SFRNTCA9IG5ldyBFZGl0SFRNTCgiIik7DQogICAgICAgfQ0KDQog ICAgIGlmIChjb21tYW5kLmVxdWFscygiQWRkIFRhZ3MiKSkgew0KICAgICAgIGlmIChuZXdIVE1M ICE9IG51bGwpew0KICAgICAgICAgbmV3SFRNTC5zZXRTZWxlY3Rpb24oR1VJQm9keS5nZXRTZWxl Y3RlZFRleHQoKSk7DQogICAgICAgICB0YWdzX1RvX0FkZCA9IG5ld0hUTUwuZ2V0VGFncygpOw0K ICAgICAgICAgR1VJQm9keS5yZXBsYWNlUmFuZ2UodGFnc19Ub19BZGQsIEdVSUJvZHkuZ2V0U2Vs ZWN0aW9uU3RhcnQoKSwgR1VJQm9keS5nZXRTZWxlY3Rpb25FbmQoKSk7DQogICAgICAgfQ0KICAg ICB9DQoNCg0KICAgIGVsc2UgaWYgKGNvbW1hbmQuZXF1YWxzKCJDbGVhciIpKXsNCiAgICAgIGZy YW1lLmRpc3Bvc2UoKTsNCiAgICAgIG5ld0hUTUwuZGlzcG9zZSgpOw0KICAgICAgbmV3IENvbXBv c2UoKTsNCg0KDQogICAgICB9DQoNCiAgICBlbHNlIGlmIChjb21tYW5kLmVxdWFscygiU2VuZCIp KXsNCiAgICAgICAvKiogICAgICBtZXNzYWdlID0gbmV3IFNpbXBsZU1haWxNZXNzYWdlKCk7DQog ICAgICBtZXNzYWdlLnNldFJlY2lwaWVudChHVUl0by5nZXRUZXh0KCkpOw0KICAgICAgbWVzc2Fn ZS5zZXREYXRlKG5ldyBTaW1wbGVEYXRlKCkpOw0KICAgICAgbWVzc2FnZS5zZXRTZW5kZXIoIiIs ICJub2JvZHlAbm93aGVyZS5jb20iKTsNCiAgICAgIG1lc3NhZ2Uuc2V0U3ViamVjdChHVUlzdWJq ZWN0LmdldFRleHQoKSk7DQogICAgICAqLw0KDQogICAgfQ0KICB9DQoNCi8vICstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyB8IFdpbmRvdyBMaXN0ZW5lcnMg fA0KLy8gKy0tLS0tLS0tLS0tLS0tLS0tLSsNCg0KICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3Np bmcoIFdpbmRvd0V2ZW50IGV2ZW50ICkgew0KICAgIGZyYW1lLmRpc3Bvc2UoKTsNCiAgICBTeXN0 ZW0uZXhpdCgwKTsNCiAgICB9DQoNCnB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFy Z3Mpew0KICBuZXcgQ29tcG9zZSgpOw0KfQ0KfQ0K --mime-boundary-interchange-383a19ab Content-Type: application/octet-stream; name="EditHTML.java" Content-disposition: attachment; filename="EditHTML.java" Content-Transfer-Encoding: BASE64 aW1wb3J0IGphdmEuYXd0Lio7DQppbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsNCmltcG9ydCBTaW1w bGVPdXRwdXQ7DQppbXBvcnQgQ29tcGFyYXRvcjsNCg0KDQovKioNCiAqUHJvdmlkZXMgdGhlIGh0 bWwgdGFncyB3aGljaCBjYW4gYmUgYWRkZWQgdG8gYW4gaHRtbCBlbWFpbA0KICoNCiAqYXV0aG9y IEZsYW1pbmdvDQogKi8NCg0KcHVibGljIGNsYXNzIEVkaXRIVE1MIGV4dGVuZHMgRnJhbWUgaW1w bGVtZW50cyBXaW5kb3dMaXN0ZW5lcg0Kew0KDQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCiAgICAvLyAgICAgICAgICAgIEZpZWxkcw0KICAgIC8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgcHJpdmF0ZSBMYWJlbCBjb2xvckxhYmVsID0gbnVs bDsNCiAgICBwcml2YXRlIExhYmVsIGZvbnRMYWJlbCA9IG51bGw7DQogICAgcHJpdmF0ZSBMYWJl bCBzdHlsZUxhYmVsID0gbnVsbDsNCiAgICBwcml2YXRlIENoZWNrYm94IGNvbG9yMSA9IG51bGw7 DQogICAgcHJpdmF0ZSBDaGVja2JveCBjb2xvcjIgPSBudWxsOw0KICAgIHByaXZhdGUgQ2hlY2ti b3ggY29sb3IzID0gbnVsbDsNCiAgICBwcml2YXRlIENoZWNrYm94IGNvbG9yNCA9IG51bGw7DQog ICAgcHJpdmF0ZSBDaGVja2JveCBjb2xvcjUgPSBudWxsOw0KICAgIHByaXZhdGUgQ2hlY2tib3gg Y29sb3I2ID0gbnVsbDsNCiAgICBwcml2YXRlIENoZWNrYm94IHN0eWxlSXRhbGljcyA9IG51bGw7 DQogICAgcHJpdmF0ZSBDaGVja2JveCBzdHlsZUJvbGQgPSBudWxsOw0KICAgIHByaXZhdGUgQ2hl Y2tib3ggc3R5bGVUZWxldHlwZSA9IG51bGw7DQogICAgcHJpdmF0ZSBDaGVja2JveCBmb250MSA9 IG51bGw7DQogICAgcHJpdmF0ZSBDaGVja2JveCBmb250MiA9IG51bGw7DQogICAgcHJpdmF0ZSBD aGVja2JveCBmb250MyA9IG51bGw7DQogICAgcHJpdmF0ZSBDaGVja2JveEdyb3VwIGNoZWNrR3Jv dXAxID0gbmV3IENoZWNrYm94R3JvdXAoKTsNCiAgICBwcml2YXRlIENoZWNrYm94R3JvdXAgY2hl Y2tHcm91cDIgPSBuZXcgQ2hlY2tib3hHcm91cCgpOw0KICAgIHByaXZhdGUgQnV0dG9uIFJldHVy blRhZ3M7DQogICAgcHJpdmF0ZSBTdHJpbmcgY29sb3J0YWcgPSAiIjsNCiAgICBwcml2YXRlIFN0 cmluZyBjb2xvcnRhZzIgPSAiIjsNCiAgICBwcml2YXRlIFN0cmluZyBmb250dGFnID0gIiI7IA0K ICAgIHByaXZhdGUgU3RyaW5nIGZvbnR0YWcyID0gIiI7ICANCiAgICBwcm90ZWN0ZWQgU3RyaW5n IHRleHRTZWxlY3Rpb24gPSAiIjsNCiAgICBwcm90ZWN0ZWQgU3RyaW5nIGJvbGR0YWcgPSAiIjsN CiAgICBwcm90ZWN0ZWQgU3RyaW5nIGJvbGR0YWcyID0gIiI7DQogICAgcHJvdGVjdGVkIFN0cmlu ZyBpdGFsaWNzdGFnID0gIiI7DQogICAgcHJvdGVjdGVkIFN0cmluZyBpdGFsaWNzdGFnMiA9ICIi Ow0KICAgIHByb3RlY3RlZCBTdHJpbmcgdGVsZXR5cGV0YWcgPSAiIjsNCiAgICBwcm90ZWN0ZWQg U3RyaW5nIHRlbGV0eXBldGFnMiA9ICIiOw0KICAgIHByb3RlY3RlZCBTdHJpbmcgY29sb3JzZWxl Y3RlZCA9ICIiOw0KICAgIHByb3RlY3RlZCBGcmFtZSBmcmFtZTsNCg0KICAgIC8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgLy8gICAgICAgICAgQ29uc3RydWN0b3JzDQogICAg Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICBwdWJsaWMgRWRpdEhUTUwoU3Ry aW5nIHNlbGVjdGlvbikNCiAgICB7DQogICAgICAgIC8vIENhbGwgc3VwZXIgY29uc3RydWN0b3Iu DQogICAgICAgIHN1cGVyKCAiRGVzaWduZXIgR21haWwiICk7DQogICAgICAgIHRleHRTZWxlY3Rp b24gPSBzZWxlY3Rpb247DQogICAgICAgIC8vIFNldCB1cCBjb250YWluZXIgY29tcG9uZW50DQog ICAgICAgIHNldEJhY2tncm91bmQoIG5ldyBDb2xvciggMCwgMjU1LCAzMCApICk7DQogICAgICAg IHNldEZvcmVncm91bmQoIG5ldyBDb2xvciggNTAsIDUwLCAyNTUgKSApOw0KICAgICAgICBzZXRT aXplKCBuZXcgRGltZW5zaW9uKCAxNTAsIDMwMCApICk7DQogICAgICAgIHNldFJlc2l6YWJsZSgg dHJ1ZSApOw0KDQogICAgICAgIC8vQWRkIGxpc3RlbmVycy4NCiAgICAgICAgYWRkV2luZG93TGlz dGVuZXIoIHRoaXMgKTsNCg0KICAgICAgICAvLyBNYWtlIHRoZSBHVUkuDQogICAgICAgIG1ha2VH VUkoKTsNCg0KDQoNCiAgICAgDQogICAgICAgDQoNCiAgICB9DQoNCiAgICAvLyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCiAgICAvLyBHVUkgYnVpbGRlcg0KICAgIC8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KICAgIHByaXZhdGUgdm9pZCBtYWtlR1VJKCkNCiAgICB7DQoNCiAg ICAgICAgLy8gQ3JlYXRlIHRoZSBHVUkgc3lzdGVtLg0KICAgICAgICBHcmlkQmFnTGF5b3V0IG1h aW5MYXlvdXQgPSBuZXcgR3JpZEJhZ0xheW91dCgpOw0KICAgICAgICBzZXRMYXlvdXQoIG1haW5M YXlvdXQgKTsNCiAgICAgICAgY29sb3JMYWJlbCA9IG5ldyBMYWJlbCggIkNvbG9yIiwgTGFiZWwu Q0VOVEVSICk7DQogICAgICAgIG1haW5MYXlvdXQuc2V0Q29uc3RyYWludHMoIGNvbG9yTGFiZWws IG1ha2VHcmlkQ29ucyggMCwgNiwgNCwgMiwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJhaW50cy5C T1RILCBHcmlkQmFnQ29uc3RyYWludHMuQ0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkgKTsNCiAg ICAgICAgYWRkKCBjb2xvckxhYmVsICk7DQogICAgICAgIGNvbG9yTGFiZWwuc2V0QmFja2dyb3Vu ZCggbmV3IENvbG9yKCAxOTIsIDE5MiwgMTkyICkgKTsNCiAgICAgICAgY29sb3JMYWJlbC5zZXRG b3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDAsIDAsIDAgKSApOw0KICAgICAgICBjb2xvckxhYmVsLnNl dEVuYWJsZWQoIHRydWUgKTsNCiAgICAgICAgY29sb3JMYWJlbC5zZXRWaXNpYmxlKCB0cnVlICk7 DQogICAgICAgIGZvbnRMYWJlbCA9IG5ldyBMYWJlbCggIkZvbnQiLCBMYWJlbC5DRU5URVIgKTsN CiAgICAgICAgbWFpbkxheW91dC5zZXRDb25zdHJhaW50cyggZm9udExhYmVsLCBtYWtlR3JpZENv bnMoIDUsIDYsIDQsIDIsIDEwMCwgMTAwLCBHcmlkQmFnQ29uc3RyYWludHMuQk9USCwgR3JpZEJh Z0NvbnN0cmFpbnRzLkNFTlRFUiwgMCwgMCwgMCwgMCwgMCwgMCApICk7DQogICAgICAgIGFkZCgg Zm9udExhYmVsICk7DQogICAgICAgIGZvbnRMYWJlbC5zZXRCYWNrZ3JvdW5kKCBuZXcgQ29sb3Io IDE5MiwgMTkyLCAxOTIgKSApOw0KICAgICAgICBmb250TGFiZWwuc2V0Rm9yZWdyb3VuZCggbmV3 IENvbG9yKCAwLCAwLCAwICkgKTsNCiAgICAgICAgZm9udExhYmVsLnNldEVuYWJsZWQoIHRydWUg KTsNCiAgICAgICAgZm9udExhYmVsLnNldFZpc2libGUoIHRydWUgKTsNCiAgICAgICAgc3R5bGVM YWJlbCA9IG5ldyBMYWJlbCggIlN0eWxlIiwgTGFiZWwuQ0VOVEVSICk7DQogICAgICAgIG1haW5M YXlvdXQuc2V0Q29uc3RyYWludHMoIHN0eWxlTGFiZWwsIG1ha2VHcmlkQ29ucyggMCwgMCwgOSwg MiwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJhaW50cy5CT1RILCBHcmlkQmFnQ29uc3RyYWludHMu Q0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkgKTsNCiAgICAgICAgYWRkKCBzdHlsZUxhYmVsICk7 DQogICAgICAgIHN0eWxlTGFiZWwuc2V0QmFja2dyb3VuZCggbmV3IENvbG9yKCAxOTIsIDE5Miwg MTkyICkgKTsNCiAgICAgICAgc3R5bGVMYWJlbC5zZXRGb3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDAs IDAsIDAgKSApOw0KICAgICAgICBzdHlsZUxhYmVsLnNldEVuYWJsZWQoIHRydWUgKTsNCiAgICAg ICAgc3R5bGVMYWJlbC5zZXRWaXNpYmxlKCB0cnVlICk7DQogICAgICAgIGNvbG9yMSA9IG5ldyBD aGVja2JveCggIlllbGxvdyIsIGZhbHNlICk7DQogICAgICAgIGNvbG9yMS5zZXRDaGVja2JveEdy b3VwKCBjaGVja0dyb3VwMSApOw0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0cmFpbnRzKCBj b2xvcjEsIG1ha2VHcmlkQ29ucyggMCwgOSwgNCwgMSwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJh aW50cy5CT1RILCBHcmlkQmFnQ29uc3RyYWludHMuQ0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkg KTsNCiAgICAgICAgYWRkKCBjb2xvcjEgKTsNCiAgICAgICAgY29sb3IxLnNldEJhY2tncm91bmQo IG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7DQogICAgICAgIGNvbG9yMS5zZXRGb3JlZ3Jv dW5kKCBuZXcgQ29sb3IoIDEwMCwgMTAwLCA1MCApICk7DQogICAgICAgIGNvbG9yMS5zZXRFbmFi bGVkKCB0cnVlICk7DQogICAgICAgIGNvbG9yMS5zZXRWaXNpYmxlKCB0cnVlICk7DQogICAgICAg IGNvbG9yMiA9IG5ldyBDaGVja2JveCggIkRlZmF1bHQiLCBmYWxzZSApOw0KICAgICAgICBjb2xv cjIuc2V0Q2hlY2tib3hHcm91cCggY2hlY2tHcm91cDEgKTsNCiAgICAgICAgbWFpbkxheW91dC5z ZXRDb25zdHJhaW50cyggY29sb3IyLCBtYWtlR3JpZENvbnMoIDAsIDgsIDQsIDEsIDEwMCwgMTAw LCBHcmlkQmFnQ29uc3RyYWludHMuQk9USCwgR3JpZEJhZ0NvbnN0cmFpbnRzLkNFTlRFUiwgMCwg MCwgMCwgMCwgMCwgMCApICk7DQogICAgICAgIGFkZCggY29sb3IyICk7DQogICAgICAgIGNvbG9y Mi5zZXRCYWNrZ3JvdW5kKCBuZXcgQ29sb3IoIDE5MiwgMTkyLCAxOTIgKSApOw0KICAgICAgICBj b2xvcjIuc2V0Rm9yZWdyb3VuZCggbmV3IENvbG9yKCAwLCAwLCAwICkgKTsNCiAgICAgICAgY29s b3IyLnNldEVuYWJsZWQoIHRydWUgKTsNCiAgICAgICAgY29sb3IyLnNldFZpc2libGUoIHRydWUg KTsNCiAgICAgICAgY29sb3IyLnNldFN0YXRlKHRydWUpOw0KICAgICAgICBjb2xvcjMgPSBuZXcg Q2hlY2tib3goICJCbHVlIiwgZmFsc2UgKTsNCiAgICAgICAgY29sb3IzLnNldENoZWNrYm94R3Jv dXAoIGNoZWNrR3JvdXAxICk7DQogICAgICAgIG1haW5MYXlvdXQuc2V0Q29uc3RyYWludHMoIGNv bG9yMywgbWFrZUdyaWRDb25zKCAwLCAxMCwgNCwgMSwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJh aW50cy5CT1RILCBHcmlkQmFnQ29uc3RyYWludHMuQ0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkg KTsNCiAgICAgICAgYWRkKCBjb2xvcjMgKTsNCiAgICAgICAgY29sb3IzLnNldEJhY2tncm91bmQo IG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7DQogICAgICAgIGNvbG9yMy5zZXRGb3JlZ3Jv dW5kKCBuZXcgQ29sb3IoIDAsIDAsIDI1NSApICk7DQogICAgICAgIGNvbG9yMy5zZXRFbmFibGVk KCB0cnVlICk7DQogICAgICAgIGNvbG9yMy5zZXRWaXNpYmxlKCB0cnVlICk7DQogICAgICAgIGNv bG9yNCA9IG5ldyBDaGVja2JveCggIlJlZCIsIGZhbHNlICk7DQogICAgICAgIGNvbG9yNC5zZXRD aGVja2JveEdyb3VwKCBjaGVja0dyb3VwMSApOw0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0 cmFpbnRzKCBjb2xvcjQsIG1ha2VHcmlkQ29ucyggMCwgMTEsIDQsIDEsIDEwMCwgMTAwLCBHcmlk QmFnQ29uc3RyYWludHMuQk9USCwgR3JpZEJhZ0NvbnN0cmFpbnRzLkNFTlRFUiwgMCwgMCwgMCwg MCwgMCwgMCApICk7DQogICAgICAgIGFkZCggY29sb3I0ICk7ICAgICANCiAgICAgICAgY29sb3I0 LnNldEJhY2tncm91bmQoIG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7DQogICAgICAgIGNv bG9yNC5zZXRGb3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDI1NSwgMCwgMCApICk7DQogICAgICAgIGNv bG9yNC5zZXRFbmFibGVkKCB0cnVlICk7DQogICAgICAgIGNvbG9yNC5zZXRWaXNpYmxlKCB0cnVl ICk7DQogICAgICAgIGNvbG9yNSA9IG5ldyBDaGVja2JveCggIkdyZWVuIiwgZmFsc2UgKTsNCiAg ICAgICAgY29sb3I1LnNldENoZWNrYm94R3JvdXAoIGNoZWNrR3JvdXAxICk7DQogICAgICAgIG1h aW5MYXlvdXQuc2V0Q29uc3RyYWludHMoIGNvbG9yNSwgbWFrZUdyaWRDb25zKCAwLCAxMiwgNCwg MSwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJhaW50cy5CT1RILCBHcmlkQmFnQ29uc3RyYWludHMu Q0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkgKTsNCiAgICAgICAgYWRkKCBjb2xvcjUgKTsNCiAg ICAgICAgY29sb3I1LnNldEJhY2tncm91bmQoIG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7 DQogICAgICAgIGNvbG9yNS5zZXRGb3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDAsIDI1NSwgMCApICk7 DQogICAgICAgIGNvbG9yNS5zZXRFbmFibGVkKCB0cnVlICk7DQogICAgICAgIGNvbG9yNS5zZXRW aXNpYmxlKCB0cnVlICk7DQogICAgICAgIGNvbG9yNiA9IG5ldyBDaGVja2JveCggIk9yYW5nZSIs IGZhbHNlICk7DQogICAgICAgIGNvbG9yNi5zZXRDaGVja2JveEdyb3VwKCBjaGVja0dyb3VwMSAp Ow0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0cmFpbnRzKCBjb2xvcjYsIG1ha2VHcmlkQ29u cyggMCwgMTMsIDQsIDEsIDEwMCwgMTAwLCBHcmlkQmFnQ29uc3RyYWludHMuQk9USCwgR3JpZEJh Z0NvbnN0cmFpbnRzLkNFTlRFUiwgMCwgMCwgMCwgMCwgMCwgMCApICk7DQogICAgICAgIGFkZCgg Y29sb3I2ICk7DQogICAgICAgIGNvbG9yNi5zZXRCYWNrZ3JvdW5kKCBuZXcgQ29sb3IoIDE5Miwg MTkyLCAxOTIgKSApOw0KICAgICAgICBjb2xvcjYuc2V0Rm9yZWdyb3VuZCggbmV3IENvbG9yKCA1 MCwgNTAsIDUwICkgKTsNCiAgICAgICAgY29sb3I2LnNldEVuYWJsZWQoIHRydWUgKTsNCiAgICAg ICAgY29sb3I2LnNldFZpc2libGUoIHRydWUgKTsNCiAgICAgICAgc3R5bGVJdGFsaWNzID0gbmV3 IENoZWNrYm94KCAiSVRBTElDUyIsIGZhbHNlICk7DQogICAgICAgIG1haW5MYXlvdXQuc2V0Q29u c3RyYWludHMoIHN0eWxlSXRhbGljcywgbWFrZUdyaWRDb25zKCAwLCAzLCA5LCAxLCAxMDAsIDEw MCwgR3JpZEJhZ0NvbnN0cmFpbnRzLkJPVEgsIEdyaWRCYWdDb25zdHJhaW50cy5DRU5URVIsIDAs IDAsIDAsIDAsIDAsIDAgKSApOw0KICAgICAgICBhZGQoIHN0eWxlSXRhbGljcyApOw0KICAgICAg ICBzdHlsZUl0YWxpY3Muc2V0QmFja2dyb3VuZCggbmV3IENvbG9yKCAxOTIsIDE5MiwgMTkyICkg KTsNCiAgICAgICAgc3R5bGVJdGFsaWNzLnNldEZvcmVncm91bmQoIG5ldyBDb2xvciggMCwgMCwg MCApICk7DQogICAgICAgIHN0eWxlSXRhbGljcy5zZXRFbmFibGVkKCB0cnVlICk7DQogICAgICAg IHN0eWxlSXRhbGljcy5zZXRWaXNpYmxlKCB0cnVlICk7DQogICAgICAgIHN0eWxlQm9sZCA9IG5l dyBDaGVja2JveCggIkJPTEQiLCBmYWxzZSApOw0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0 cmFpbnRzKCBzdHlsZUJvbGQsIG1ha2VHcmlkQ29ucyggMCwgMiwgOSwgMSwgMTAwLCAxMDAsIEdy aWRCYWdDb25zdHJhaW50cy5CT1RILCBHcmlkQmFnQ29uc3RyYWludHMuQ0VOVEVSLCAwLCAwLCAw LCAwLCAwLCAwICkgKTsNCiAgICAgICAgYWRkKCBzdHlsZUJvbGQgKTsNCiAgICAgICAgc3R5bGVC b2xkLnNldEJhY2tncm91bmQoIG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7DQogICAgICAg IHN0eWxlQm9sZC5zZXRGb3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDAsIDAsIDAgKSApOw0KICAgICAg ICBzdHlsZUJvbGQuc2V0RW5hYmxlZCggdHJ1ZSApOw0KICAgICAgICBzdHlsZUJvbGQuc2V0Vmlz aWJsZSggdHJ1ZSApOw0KICAgICAgICBzdHlsZVRlbGV0eXBlID0gbmV3IENoZWNrYm94KCAiVEVM RVRZUEUiLCBmYWxzZSApOw0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0cmFpbnRzKCBzdHls ZVRlbGV0eXBlLCBtYWtlR3JpZENvbnMoIDAsIDQsIDksIDEsIDEwMCwgMTAwLCBHcmlkQmFnQ29u c3RyYWludHMuQk9USCwgR3JpZEJhZ0NvbnN0cmFpbnRzLkNFTlRFUiwgMCwgMCwgMCwgMCwgMCwg MCApICk7DQogICAgICAgIGFkZCggc3R5bGVUZWxldHlwZSApOw0KICAgICAgICBzdHlsZVRlbGV0 eXBlLnNldEJhY2tncm91bmQoIG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7DQogICAgICAg IHN0eWxlVGVsZXR5cGUuc2V0Rm9yZWdyb3VuZCggbmV3IENvbG9yKCAwLCAwLCAwICkgKTsNCiAg ICAgICAgc3R5bGVUZWxldHlwZS5zZXRFbmFibGVkKCB0cnVlICk7DQogICAgICAgIHN0eWxlVGVs ZXR5cGUuc2V0VmlzaWJsZSggdHJ1ZSApOw0KICAgICAgICBmb250MSA9IG5ldyBDaGVja2JveCgg IkRlZmF1bHQiLCBmYWxzZSApOw0KICAgICAgICBmb250MS5zZXRDaGVja2JveEdyb3VwKCBjaGVj a0dyb3VwMiApOw0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0cmFpbnRzKCBmb250MSwgbWFr ZUdyaWRDb25zKCA1LCA4LCA0LCAxLCAxMDAsIDEwMCwgR3JpZEJhZ0NvbnN0cmFpbnRzLkJPVEgs IEdyaWRCYWdDb25zdHJhaW50cy5DRU5URVIsIDAsIDAsIDAsIDAsIDAsIDAgKSApOw0KICAgICAg ICBhZGQoIGZvbnQxICk7DQogICAgICAgIGZvbnQxLnNldEJhY2tncm91bmQoIG5ldyBDb2xvcigg MTkyLCAxOTIsIDE5MiApICk7DQogICAgICAgIGZvbnQxLnNldEZvcmVncm91bmQoIG5ldyBDb2xv ciggMCwgMCwgMCApICk7DQogICAgICAgIGZvbnQxLnNldEVuYWJsZWQoIHRydWUgKTsNCiAgICAg ICAgZm9udDEuc2V0VmlzaWJsZSggdHJ1ZSApOw0KICAgICAgICBmb250MS5zZXRTdGF0ZSh0cnVl KTsNCiAgICAgICAgZm9udDIgPSBuZXcgQ2hlY2tib3goICJIYW5kd3JpdGluZyIsIGZhbHNlICk7 DQogICAgICAgIGZvbnQyLnNldENoZWNrYm94R3JvdXAoIGNoZWNrR3JvdXAyICk7DQogICAgICAg IG1haW5MYXlvdXQuc2V0Q29uc3RyYWludHMoIGZvbnQyLCBtYWtlR3JpZENvbnMoIDUsIDksIDQs IDEsIDEwMCwgMTAwLCBHcmlkQmFnQ29uc3RyYWludHMuQk9USCwgR3JpZEJhZ0NvbnN0cmFpbnRz LkNFTlRFUiwgMCwgMCwgMCwgMCwgMCwgMCApICk7DQogICAgICAgIGFkZCggZm9udDIgKTsNCiAg ICAgICAgZm9udDIuc2V0QmFja2dyb3VuZCggbmV3IENvbG9yKCAxOTIsIDE5MiwgMTkyICkgKTsN CiAgICAgICAgZm9udDIuc2V0Rm9yZWdyb3VuZCggbmV3IENvbG9yKCAwLCAwLCAwICkgKTsNCiAg ICAgICAgZm9udDIuc2V0RW5hYmxlZCggdHJ1ZSApOw0KICAgICAgICBmb250Mi5zZXRWaXNpYmxl KCB0cnVlICk7DQogICAgICAgIGZvbnQzID0gbmV3IENoZWNrYm94KCAiQ291cmllciBOZXciLCBm YWxzZSApOw0KICAgICAgICBmb250My5zZXRDaGVja2JveEdyb3VwKCBjaGVja0dyb3VwMiApOw0K ICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0cmFpbnRzKCBmb250MywgbWFrZUdyaWRDb25zKCA1 LCAxMCwgNCwgMSwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJhaW50cy5CT1RILCBHcmlkQmFnQ29u c3RyYWludHMuQ0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkgKTsNCiAgICAgICAgYWRkKCBmb250 MyApOw0KICAgICAgICBmb250My5zZXRCYWNrZ3JvdW5kKCBuZXcgQ29sb3IoIDE5MiwgMTkyLCAx OTIgKSApOw0KICAgICAgICBmb250My5zZXRGb3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDAsIDAsIDAg KSApOw0KICAgICAgICBmb250My5zZXRFbmFibGVkKCB0cnVlICk7DQogICAgICAgIGZvbnQzLnNl dFZpc2libGUoIHRydWUgKTsNCg0KICAgICAgICBwYWNrKCk7DQogICAgICAgIHNob3coKTsNCg0K ICAgIH0NCg0KDQogICAgLypBbGxvd3MgdGhlIHNlbGVjdGlvbiBvZiB0ZXh0IHRoYXQgaXMgdG8g aGF2ZSBodG1sIHRhZ3MgDQogICAgICphZGRlZCB0byBiZSBzZXQNCiAgICAgKi8NCg0KICAgIHB1 YmxpYyB2b2lkIHNldFNlbGVjdGlvbihTdHJpbmcgc2VsZWN0aW9uKSB7DQogICAgICAgIA0KICAg ICAgICB0ZXh0U2VsZWN0aW9uID0gc2VsZWN0aW9uOw0KICAgIH0NCg0KICAgIC8qUmV0dXJucyB0 aGUgdGFncyB0aGUgdXNlciBoYXMgY2hvc2VuLCB0aHJ1IHRoZSBHVUksIA0KICAgICAqdG8gYWRk IHRvIHRoZSBzZWxlY3RlZCB0ZXh0DQogICAgICovDQoNCiAgICBwdWJsaWMgU3RyaW5nIGdldFRh Z3MoKSB7DQoNCiAgICAgICAgaWYgKHN0eWxlQm9sZC5nZXRTdGF0ZSgpKSB7DQogICAgICAgICAg ICBib2xkdGFnID0gIjxiPiI7DQogICAgICAgICAgICBib2xkdGFnMiA9ICI8L2I+IjsNCiAgICAg ICAgfQ0KDQogICAgICAgIGlmIChzdHlsZUl0YWxpY3MuZ2V0U3RhdGUoKSkgew0KICAgICAgICAg ICAgaXRhbGljc3RhZyA9ICI8aT4iOw0KICAgICAgICAgICAgaXRhbGljc3RhZzIgPSAiPC9pPiI7 DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoc3R5bGVUZWxldHlwZS5nZXRTdGF0ZSgpKSB7DQog ICAgICAgICAgICB0ZWxldHlwZXRhZyA9ICI8dHQ+IjsNCiAgICAgICAgICAgIHRlbGV0eXBldGFn MiA9ICI8L3R0PiI7DQogICAgICAgIH0NCg0KICAgICAgICBjb2xvcnRhZyA9ICgiPGZvbnQgY29s b3I9IiArIGdldENvbG9yKCkgKyAiPiIpOw0KICAgICAgICBjb2xvcnRhZzIgPSAoIjwvZm9udD4i KTsNCiAgICAgICAgZm9udHRhZyA9ICgiPGZvbnQ9IiArIChjaGVja0dyb3VwMi5nZXRTZWxlY3Rl ZENoZWNrYm94KCkpLmdldExhYmVsKCkgKyAiPiIpOw0KICAgICAgICBmb250dGFnMiA9ICgiPC9m b250PiIpOw0KICAgICAgICByZXR1cm4gKGJvbGR0YWcgKyBpdGFsaWNzdGFnICsgdGVsZXR5cGV0 YWcgKyBmb250dGFnICsgY29sb3J0YWcgKyAiXG4iICsgIiAgICAiICsgdGV4dFNlbGVjdGlvbiAr ICJcbiIgKyBmb250dGFnMiArIGNvbG9ydGFnMiArIGJvbGR0YWcyICsgaXRhbGljc3RhZzIgKyB0 ZWxldHlwZXRhZzIpOw0KICAgIH0NCg0KDQogICAgcHVibGljIFN0cmluZyBnZXRDb2xvcigpIHsN CiAgICAgICAgU2ltcGxlT3V0cHV0IG91dCA9IG5ldyBTaW1wbGVPdXRwdXQoKTsNCiAgICAgICAg b3V0LnByaW50bG4oKGNoZWNrR3JvdXAxLmdldFNlbGVjdGVkQ2hlY2tib3goKSkuZ2V0TGFiZWwo KSk7DQogICAgICAgIGlmICgoY2hlY2tHcm91cDEuZ2V0U2VsZWN0ZWRDaGVja2JveCgpKS5nZXRM YWJlbCgpLmVxdWFscygiUmVkIikpIHsNCiAgICAgICAgICAgIGNvbG9yc2VsZWN0ZWQgPSAiI0ZG MzMwMCI7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGlmICgoY2hlY2tHcm91cDEuZ2V0 U2VsZWN0ZWRDaGVja2JveCgpKS5nZXRMYWJlbCgpLmVxdWFscygiQmx1ZSIpKSB7DQogICAgICAg ICAgICBjb2xvcnNlbGVjdGVkID0gIiMwMDAwRkYiOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYg KChjaGVja0dyb3VwMS5nZXRTZWxlY3RlZENoZWNrYm94KCkpLmdldExhYmVsKCkuZXF1YWxzKCJH cmVlbiIpKSB7DQogICAgICAgICAgICBjb2xvcnNlbGVjdGVkID0gIiMwMENDMzMiOw0KICAgICAg ICB9DQoNCiAgICAgICAgaWYgKChjaGVja0dyb3VwMS5nZXRTZWxlY3RlZENoZWNrYm94KCkpLmdl dExhYmVsKCkuZXF1YWxzKCJZZWxsb3ciKSkgew0KICAgICAgICAgICAgY29sb3JzZWxlY3RlZCA9 ICIjOTlGRjAwIjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICgoY2hlY2tHcm91cDEuZ2V0U2Vs ZWN0ZWRDaGVja2JveCgpKS5nZXRMYWJlbCgpLmVxdWFscygiT3JhbmdlIikpIHsNCiAgICAgICAg ICAgIGNvbG9yc2VsZWN0ZWQgPSAiI0NDMzMwMCI7DQogICAgICAgIH0NCg0KICAgICAgIA0KICAg ICAgICBpZiAoKGNoZWNrR3JvdXAxLmdldFNlbGVjdGVkQ2hlY2tib3goKSkuZ2V0TGFiZWwoKS5l cXVhbHMoIkRlZmF1bHQiKSkgeyANCiAgICAgICAgICAgIGNvbG9yc2VsZWN0ZWQgPSAiIzAwMDAw MCI7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGNvbG9yc2VsZWN0ZWQ7DQogICAgfQ0KDQog ICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAv LyAgU2lsbHksIHNpbGx5IGdyaWRiYWdsYXlvdXQNCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIHB1YmxpYyBHcmlkQmFnQ29uc3RyYWludHMg bWFrZUdyaWRDb25zKCBpbnQgeCwgaW50IHksIGludCBkeCwgaW50IGR5LCBpbnQgd3gsIGludCB3 eSwgaW50IGZpbGwsIGludCBhbmNoLCBpbnQgaXQsIGludCBpbCwgaW50IGliLCBpbnQgaXIsIGlu dCBweCwgaW50IHB5ICkNCiAgICB7DQogICAgICAgIEdyaWRCYWdDb25zdHJhaW50cyBjb25zID0g bmV3IEdyaWRCYWdDb25zdHJhaW50cygpOw0KDQogICAgICAgIC8vIFNldCB0aGUgY29uc3RyYWlu dHMuDQogICAgICAgIGNvbnMud2VpZ2h0eCAgICA9IHd4Ow0KICAgICAgICBjb25zLndlaWdodHkg ICAgPSB3eTsNCiAgICAgICAgY29ucy5ncmlkeCAgICAgID0geDsNCiAgICAgICAgY29ucy5ncmlk eSAgICAgID0geTsNCiAgICAgICAgY29ucy5ncmlkd2lkdGggID0gZHg7DQogICAgICAgIGNvbnMu Z3JpZGhlaWdodCA9IGR5Ow0KICAgICAgICBjb25zLmZpbGwgICAgICAgPSBmaWxsOw0KICAgICAg ICBjb25zLmFuY2hvciAgICAgPSBhbmNoOw0KICAgICAgICBjb25zLmluc2V0cyAgICAgPSBuZXcg SW5zZXRzKCBpdCwgaWwsIGliLCBpciApOw0KICAgICAgICBjb25zLmlwYWR4ICAgICAgPSBweDsN CiAgICAgICAgY29ucy5pcGFkeSAgICAgID0gcHk7DQoNCiAgICAgICAgLy8gUmV0dXJuIHRoZSBj b25zdHJhaW50cyANCiAgICAgICAgcmV0dXJuIGNvbnM7DQoNCiAgICB9DQoNCiAgICAvLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAvLyB3aW5kb3cgbGlzdGVuZXJzDQogICAgLy8gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyggV2lu ZG93RXZlbnQgZXZlbnQgKSB7IGRpc3Bvc2UoKTsgfQ0KICAgIHB1YmxpYyB2b2lkIHdpbmRvd09w ZW5lZCggV2luZG93RXZlbnQgZXZlbnQgKSB7fQ0KICAgIHB1YmxpYyB2b2lkIHdpbmRvd0ljb25p ZmllZCggV2luZG93RXZlbnQgZXZlbnQgKSB7fQ0KICAgIHB1YmxpYyB2b2lkIHdpbmRvd0RlaWNv bmlmaWVkKCBXaW5kb3dFdmVudCBldmVudCApIHt9DQogICAgcHVibGljIHZvaWQgd2luZG93Q2xv c2VkKCBXaW5kb3dFdmVudCBldmVudCApIHt9DQogICAgcHVibGljIHZvaWQgd2luZG93QWN0aXZh dGVkKCBXaW5kb3dFdmVudCBldmVudCApIHt9DQogICAgcHVibGljIHZvaWQgd2luZG93RGVhY3Rp dmF0ZWQoIFdpbmRvd0V2ZW50IGV2ZW50ICkge30NCiAgICAgIA0KICAgIC8vcHVibGljIHN0YXRp YyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgew0KICAgIC8vdGV4dHNlbGVjdGlvbiA9IChuZXcg dHJ5MygiTGV0J3MgY2hhbmdlIHRoaXMgdGV4dCIpKTsNCiAgICAvL30NCn0NCg== --mime-boundary-interchange-383a19ab--