[[project @ 2005-01-06 18:19:16 by unknown_lamer] unknown_lamer**20050106181916 Misc. bug fixes, documentation updates, and part of the new config system. It compiles at least; the rest of the config system will be added soonish. ] { addfile ./source/BotConfig.C addfile ./source/BotConfig.H hunk ./ChangeLog 1 +2005-01-06 Clinton Ebadi + + * source/BotConfig.C (set_option_value): Fuck you STL + (push_back_): Reimplemented so that it doesn't need std::bind1st + because the STL is being stupid + +2004-12-26 Clinton Ebadi + + * source/BotConfig.C (read_config): Implemented properly + (get_option_values): Implemented properly + (set_config_file): Fixed + +2004-07-10 Clinton Ebadi + + * bobot++.texinfo (Built-In Commands): Added empty stubs to the + list of commands + +2004-06-22 Clinton Ebadi + + * source/BotConfig.C: New file (implementation of configuration database) + + * source/BotConfig.H: New File (semi-generic configuration database) + +2004-06-17 Clinton Ebadi + + * bobot++.texinfo (Starting the Bot): New section + hunk ./NEWS 18 +- Misc. Bugfixes hunk ./TODO 7 +* Utils::isValidNickName should have a configurable max nick length + (now that most networks allow for longer than nine character + nicks). This is dependant upon the new configuration system hunk ./TODO 16 -* Improve the help syst +* Improve the help system hunk ./TODO 22 +* Add DCC_CHAT_END hook for Scheme hunk ./TODO 67 +* New config values in config db should be added before old values + (this is faster but breaks the way server lists work in 2.x) binary ./bobot++.info oldhex *5468697320697320626f626f742b2b2e696e666f2c2070726f6475636564206279206d616b6569 *6e666f2076657273696f6e20342e362066726f6d0a626f626f742b2b2e746578696e666f2e0a0a *202020546869732066696c6520646f63756d656e747320426f626f742b2b20627920436c696e74 *6f6e20456261646920616e6420457469656e6e65204265726e6172640a286f726967696e616c20 *617574686f722c206e6f206c6f6e67657220776f726b73206f6e2070726f6772616d292e0a0a20 *2020436f7079726967687420323030322c3230303420436c696e746f6e2045626164690a0a2020 *205065726d697373696f6e206973206772616e74656420746f20636f70792c2064697374726962 *75746520616e642f6f72206d6f64696679207468697320646f63756d656e740a756e6465722074 *6865207465726d73206f662074686520474e55204672656520446f63756d656e746174696f6e20 *4c6963656e73652c2056657273696f6e20312e31206f720a616e79206c61746572207665727369 *6f6e207075626c697368656420627920746865204672656520536f66747761726520466f756e64 *6174696f6e3b2077697468206e6f0a496e76617269616e742053656374696f6e732c2077697468 *206e6f2046726f6e742d436f7665722054657874732c20616e642077697468206e6f204261636b *2d436f7665720a54657874732e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e *6f64653a20546f702c20204e6578743a20496e74726f64756374696f6e2c2020507265763a2028 *646972292c202055703a2028646972290a0a2020205468697320646f63756d656e742064657363 *726962657320426f626f742b2b20627920436c696e746f6e20456261646920616e642045746965 *6e6e65204265726e6172640a286f726967696e616c20617574686f722c206e6f206c6f6e676572 *20776f726b73206f6e2070726f6772616d292e0a0a2020205468697320646f63756d656e742061 *70706c69657320746f2076657273696f6e20322e312e35206f66207468652070726f6772616d20 *6e616d656420426f626f742b2b0a0a202020436f7079726967687420323030322c323030342043 *6c696e746f6e2045626164690a0a2020205065726d697373696f6e206973206772616e74656420 *746f20636f70792c206469737472696275746520616e642f6f72206d6f64696679207468697320 *646f63756d656e740a756e64657220746865207465726d73206f662074686520474e5520467265 *6520446f63756d656e746174696f6e204c6963656e73652c2056657273696f6e20312e31206f72 *0a616e79206c617465722076657273696f6e207075626c69736865642062792074686520467265 *6520536f66747761726520466f756e646174696f6e3b2077697468206e6f0a496e76617269616e *742053656374696f6e732c2077697468206e6f2046726f6e742d436f7665722054657874732c20 *616e642077697468206e6f204261636b2d436f7665720a54657874732e0a0a2a204d656e753a0a *0a2a20496e74726f64756374696f6e3a3a0a2a20436f6e66696775726174696f6e3a3a0a2a2055 *73696e672074686520426f743a3a0a2a20536372697074696e673a3a0a2a20436f6e6365707420 *496e6465783a3a0a2a2046756e6374696f6e20496e6465783a3a0a2a205661726961626c652049 *6e6465783a3a0a0a202d2d2d205468652044657461696c6564204e6f6465204c697374696e6720 *2d2d2d0a0a436f6e66696775726174696f6e0a0a2a20436f6e66696775726174696f6e2046696c *65733a3a0a2a20436f6e66696775726174696f6e2046696c6520506c6163656d656e743a3a0a0a *436f6e66696775726174696f6e2046696c65730a0a2a20626f742e636f6e663a3a0a2a20626f74 *2e75736572733a3a0a0a626f742e636f6e660a0a2a207365727665722073796e7461783a3a0a2a *206368616e6e656c2073796e7461783a3a0a0a5573696e6720426f626f742b2b0a0a2a20557365 *72204c6576656c733a3a0a2a2050726f74656374696f6e3a3a0a2a204175746f6d61746963204f *703a3a0a0a536372697074696e670a0a2a20416464696e67204e657720436f6d6d616e64733a3a *0a2a20486f6f6b733a3a0a2a20536368656d652055736572204c6576656c733a3a0a2a2053656e *64696e67204d657373616765733a3a0a2a204d69736320536372697074696e672053747566663a *3a0a0a486f6f6b730a0a2a204372656174696e67206120486f6f6b3a3a0a2a20486f6f6b205479 *7065733a3a0a0a53656e64696e67204d657373616765730a0a2a2048696768204c6576656c204d *6573736167652046756e6374696f6e733a3a0a2a204c6f77204c6576656c204d65737361676520 *46756e6374696f6e733a3a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64 *653a20496e74726f64756374696f6e2c20204e6578743a20436f6e66696775726174696f6e2c20 *20507265763a20546f702c202055703a20546f700a0a496e74726f64756374696f6e0a2a2a2a2a *2a2a2a2a2a2a2a2a0a0a54686973206d616e75616c206665656c732061627573656420616e6420 *6e65676c656374656420626563617573652069742068617320616c6d6f7374206e6f20636f6e74 *656e742e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a20436f6e66 *696775726174696f6e2c20204e6578743a205573696e672074686520426f742c2020507265763a *20496e74726f64756374696f6e2c202055703a20546f700a0a436f6e66696775726174696f6e0a *2a2a2a2a2a2a2a2a2a2a2a2a2a0a0a426f626f742b2b206973206561737920746f20636f6e6669 *677572652e205365652074686520606578616d706c657327206469726563746f727920666f7220 *616e0a6578616d706c6520636f6e66696775726174696f6e2e0a0a2a204d656e753a0a0a2a2043 *6f6e66696775726174696f6e2046696c65733a3a0a2a20436f6e66696775726174696f6e204669 *6c6520506c6163656d656e743a3a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c2020 *4e6f64653a20436f6e66696775726174696f6e2046696c65732c20204e6578743a20436f6e6669 *6775726174696f6e2046696c6520506c6163656d656e742c2020507265763a20436f6e66696775 *726174696f6e2c202055703a20436f6e66696775726174696f6e0a0a436f6e6669677572617469 *6f6e2046696c65730a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a0a2a204d656e753a0a0a *2a20626f742e636f6e663a3a0a2a20626f742e75736572733a3a0a0a1f0a46696c653a20626f62 *6f742b2b2e696e666f2c20204e6f64653a20626f742e636f6e662c20204e6578743a20626f742e *75736572732c2020507265763a20436f6e66696775726174696f6e2046696c65732c202055703a *20436f6e66696775726174696f6e2046696c65730a0a626f742e636f6e660a2d2d2d2d2d2d2d2d *0a0a2a204d656e753a0a0a2a207365727665722073796e7461783a3a0a2a206368616e6e656c20 *73796e7461783a3a0a0a20202060626f742e636f6e662720636f6e7461696e73206b6579207661 *6c75652070616972732073657061726174656420627920603d272e0a0a202020603c6b65793e20 *3d203c76616c75653e270a0a202020436f6d6d656e747320617265207374617274656420776974 *6820612060232720616e642063617573652074686520656e74697265206c696e6520746f206265 *0a69676e6f7265642e205f4e6f746520746861742074686973206f6e6c7920776f726b73207768 *656e207468652060232720697320746865206669727374206368617261637465720a6f66207468 *65206c696e655f2e0a0a202020626f742e636f6e6620697320746865206d61696e20636f6e6669 *6775726174696f6e2066696c6520666f72206120426f626f742b2b2e2054686520617661696c61 *626c650a636f6e66696775726174696f6e207661726961626c657320617265206c697374656420 *62656c6f7720696e2074686520666f726d617420225641524941424c450a3c64656661756c742d *76616c75653e3a206465736372697074696f6e220a0a2020202a204e49434b4e414d45203c426f *626f743e3a20546865206e69636b6e616d65206f662074686520626f7420284e49434b20697320 *616e20616c69617320666f720a20202020204e49434b4e414d45290a0a2020202a20555345524e *414d45203c626f626f743e3a205468652049524320757365726e616d65206f662074686520626f *740a0a2020202a20434d4443484152203c213e3a20546865206368617261637465722074686174 *20707265666978657320636f6d6d616e647320676976656e20746f2074686520626f740a202020 *202028434f4d4d414e4420697320616e20616c69617320666f7220434d4443484152290a0a2020 *202a204952434e414d45203c49276d206120626f626f742b2b213e3a2054686520495243206e61 *6d6520286f7220277265616c206e616d652729206f662074686520626f740a2020202020285245 *414c4e414d4520697320616e20616c69617320666f72204952434e414d45290a0a2020202a2055 *5345524c495354203c626f742e75736572733e3a204e616d65206f66207468652066696c652077 *686572652074686520757365726c6973742069732073746f7265640a0a2020202a20534849544c *495354203c626f742e736869743e3a204e616d65206f66207468652066696c6520776865726520 *74686520736869746c6973742069732073746f7265640a0a2020202a204c4f4746494c45203c24 *4c4f474449522f626f742e6c6f673e3a204c6f636174696f6e206f662074686520626f74206c6f *6766696c65202873657420746869730a2020202020746f20602f6465762f6e756c6c2720746f20 *64697361626c65206c6f6767696e67292e0a0a2020202a20534552564552203c4e6f6e653e3a20 *5468697320737065636966696573207468652073657276657220746f20636f6e6e65637420746f *2e204e6f746520746861740a202020202074686973206861732061207370656369616c2073796e *7461782e0a0a2020202a204348414e4e454c203c4e6f6e653e3a20546869732073706563696669 *65732061206368616e6e656c2074686520626f742077696c6c206a6f696e207768656e2069740a *20202020207374617274732075702e205468697320616c736f206861732061207370656369616c *2073796e7461782e0a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a *207365727665722073796e7461782c20204e6578743a206368616e6e656c2073796e7461782c20 *20507265763a20626f742e636f6e662c202055703a20626f742e636f6e660a0a73657276657220 *73796e7461780a2e2e2e2e2e2e2e2e2e2e2e2e2e0a0a534552564552203d205345525645525f4e *414d45205b504f5254205b50415353574f52445d5d0a0a202020546869732077696c6c206d616b *6520426f626f742b2b20617474656d707420746f20636f6e6e65637420746f205345525645525f *4e414d45206f6e20706f72740a504f52542077697468207468652070617373776f726420504153 *53574f52442e205345525645525f4e414d452073686f756c642062652074686520616464726573 *73206f660a746865207365727665722e20504f525420616e642050415353574f52442061726520 *6f7074696f6e616c2e20596f75206d617920757365206d6f7265207468616e206f6e650a736572 *766572206c696e653b20426f626f742b2b2077696c6c20617474656d707420746f20636f6e6e65 *637420746f20746865206669727374206f6e6520616e642c2069660a6974206661696c732c2077 *696c6c20636f6e6e65637420746f20746865206e657874206f6e6520696e20746865206c697374 *2e20546865726520697320616c736f20610a636f6d6d616e6420746f2063617573652074686520 *626f7420746f206379636c6520736572766572732e204174207468652070726573656e74207469 *6d6520426f626f742b2b0a63616e6e6f7420636f6e6e65637420746f206d6f7265207468616e20 *6f6e652073657276657220617420612074696d652e2054686973206973206120706c616e6e6564 *0a66656174757265206f6620332e302028776869636820697320612076657279206c6f6e672077 *617920617761793b207468652063757272656e7420737472756374757265206f660a7468652070 *726f6772616d20776f756c64206d616b65206974207665727920646966666963756c7420746f20 *61646420737570706f727420666f7220636f6e6e656374696e670a746f206d756c7469706c6520 *7365727665727320617420612074696d6520696e206120757361626c65206d616e6e6572292e0a *0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a206368616e6e656c2073 *796e7461782c2020507265763a207365727665722073796e7461782c202055703a20626f742e63 *6f6e660a0a6368616e6e656c2073796e7461780a2e2e2e2e2e2e2e2e2e2e2e2e2e2e0a0a434841 *4e4e454c203d204e414d453a494e495449414c5f4d4f4445533a4d4f4445535f544f5f4b454550 *3a4348414e4e454c5f4b45590a0a202020596f75206d6179206861766520616e79206e756d6265 *72206f66206368616e6e656c206c696e65732e205768656e20426f626f742b2b20737461727473 *2069742077696c6c0a617474656d707420746f206a6f696e20616e64206761696e206f70732069 *6e206576657279206368616e6e656c206c69737465642e2049742077696c6c206a6f696e204e41 *4d450a616e642073657420746865206368616e6e656c206d6f64657320746f20494e495449414c *5f4d4f4445532028652e672e20226e7422292069662069742069732061626c6520746f0a676169 *6e206f70657261746f72207374617475732e2049742077696c6c207468656e206d61696e746169 *6e204d4f4445535f544f5f4b4545502e204966207468650a6368616e6e656c2072657175697265 *732061206b657920746f20656e7465722073696d706c7920736574204348414e4e454c5f4b4559 *2e20457665727920617267756d656e740a65786365707420666f72204e414d45206973206f7074 *696f6e616c2e0a0a2020204120666577206578616d706c65206c696e65733a0a0a202020604348 *414e4e454c203d2023666f6f3a6e743a6e743a626172270a0a20202054686520626f742077696c *6c206a6f696e206023666f6f27207769746820746865206368616e6e656c206b65792060626172 *2720616e642077696c6c207468656e0a6d61696e7461696e20746865206d6f64657320606e7427 *2e0a0a202020604348414e4e454c203d20236261723a3a3a270a0a20202054686520626f742077 *696c6c206a6f696e2060236261722720616e642077696c6c206e6f742073657420616e79206d6f *646573206e6f722077696c6c2069740a617474656d707420746f206d61696e7461696e20616e79 *206d6f6465732e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a2062 *6f742e75736572732c2020507265763a20626f742e636f6e662c202055703a20436f6e66696775 *726174696f6e2046696c65730a0a626f742e75736572730a2d2d2d2d2d2d2d2d2d0a0a60626f74 *2e757365727327206973207468652064656661756c742066696c65206e616d65206f6620746865 *20757365726c6973742e204974206d6179206265206368616e6765640a696e2060626f742e636f *6e66272e205468652066696c6520636f6e7461696e73206c696e65732077697468207468652066 *6f726d61743a0a0a202020604d41534b3a4348414e4e454c3a4c4556454c3a50524f5445435449 *4f4e3a4155544f2d4f50270a0a2020202a204d41534b2069732074686520686f7374206d61736b *2028652e672e20602a212a757365726e616d650a20202020202e646f6d61696e2e636f6d272920 *6f662074686520757365720a0a2020202a204348414e4e454c2069732061206368616e6e656c20 *6d61736b206f6620746865206368616e6e656c732074686174207468652075736572206861730a *202020202070726976696c6967657320746f207573652074686520626f7420696e2028652e672e *20602a2720666f7220616c6c206368616e6e656c732c2060232a2720666f720a2020202020616c *6c206e6f6e2d6c6f63616c206368616e6e656c2c206023666f6f2a2720666f7220616c6c206368 *616e6e656c73207374617274696e6720776974680a202020202022666f6f2c2220602362617227 *20666f72206368616e6e656c20222362617222206f6e6c792c206574632e290a0a2020202a204c *4556454c206973207468652075736572206c6576656c206f6620746865207573657220282a4e6f *74652055736572204c6576656c733a3a292e0a0a2020202a2050524f54454354494f4e20697320 *7468652070726f74656374696f6e206c6576656c206f6620746865207573657220282a4e6f7465 *0a202020202050726f74656374696f6e3a3a292e0a0a2020202a204155544f2d4f502069732073 *657420746f20636f6e74726f6c207768657468657220612075736572206973206175746f6d6174 *6963616c6c7920676976656e0a20202020206f70657261746f722070726976696c69676573206f *6e206368616e6e656c20656e74727920282a4e6f7465204175746f6d61746963204f703a3a292e *0a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a20436f6e66696775 *726174696f6e2046696c6520506c6163656d656e742c2020507265763a20436f6e666967757261 *74696f6e2046696c65732c202055703a20436f6e66696775726174696f6e0a0a436f6e66696775 *726174696f6e2046696c6520506c6163656d656e740a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d *3d3d3d3d3d3d3d3d3d3d3d0a0a426f626f742b2b2077696c6c206c6f6f6b20696e20602f657463 *2f626f626f7470702f64656661756c742f2720666f72206974732064656661756c7420636f6e66 *69672069660a6e6f6e6520697320737065636966696564206f6e2074686520636f6d6d616e6420 *6c696e652e205075742074686520636f6e66696775726174696f6e2066696c657320796f750a77 *616e7420746f206265206c6f616465642062792064656661756c7420696e207468697320646972 *6563746f72792e20496620796f7520617265206e6f7420726f6f74206f720a796f752077616e74 *20746f206861766520796f7572206f776e20706572736f6e616c20636f6e66696775726174696f *6e2c2070757420697420696e0a607e2f2e626f626f7470702f636f6e6669672f64656661756c74 *2f272e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a205573696e67 *2074686520426f742c20204e6578743a20536372697074696e672c2020507265763a20436f6e66 *696775726174696f6e2c202055703a20546f700a0a5573696e6720426f626f742b2b0a2a2a2a2a *2a2a2a2a2a2a2a2a2a0a0a4649584d453a20737475666620686572652e2e2e0a0a2a204d656e75 *3a0a0a2a2055736572204c6576656c733a3a0a2a2050726f74656374696f6e3a3a0a2a20417574 *6f6d61746963204f703a3a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64 *653a2055736572204c6576656c732c20204e6578743a2050726f74656374696f6e2c2020507265 *763a205573696e672074686520426f742c202055703a205573696e672074686520426f740a0a55 *736572204c6576656c730a3d3d3d3d3d3d3d3d3d3d3d0a0a546865726520617265207365766572 *616c2075736572206c6576656c7320617661696c61626c6520696e20426f626f742b2b20746f20 *70726f766964652067726164617465640a61636365737320746f20636f6d6d616e64732e206021 *616464757365722720616e642060626f742e7573657273272075736520746865206e756d657269 *6320636f64653b0a536368656d65207573657320746865207465787475616c206e616d6520666f *7220746865206c6576656c2e2042792064656661756c7420286966206e6f2063617463682d616c *6c0a73657474696e6720697320666f756e6420696e202a4e6f746520626f742e75736572733a3a *2e2920612075736572206973206e6f74206576656e20610a60626f743a757365722d6e6f6e6527 *20616e642063616e6e6f742065786563757465202a616e792a20636f6d6d616e64732c20657665 *6e20636f6d6d616e64730a617661696c61626c6520746f2060626f743a757365722d6e6f6e6527 *2e0a0a2020302e2060626f743a757365722d6e6f6e6527202d204e6f202a6275696c742d696e2a *20636f6d6d616e6473206d6179206265206578656375746564205f62790a202020202064656661 *756c745f2028636f6d6d616e6473206d61792062652061646465642066726f6d20536368656d65 *20746861742063616e2062652065786563757465640a20202020206279207573657273206f6620 *6c6576656c206e6f6e6520616e6420746865206c6576656c20726571756972656420746f206578 *6563757465206120636f6d6d616e640a20202020206d6179206265206368616e6765642066726f *6d20536368656d65292e0a0a2020312e2060626f743a757365722d7573657227202d2057696c6c *2062652061626c6520746f2065786563757465206d6f737420636f6d6d616e647320627574206e *6f740a2020202020616c6c20616e642063616e6e6f7420757365206d61736b73206f6e206b6963 *6b7320616e642062616e732e0a0a2020322e2060626f743a757365722d7472757374656427202d *20466f72206275696c742d696e73207769746820612064656661756c7420636f6e666967757261 *74696f6e0a2020202020746869732075736572206861732061636365737320746f207468652073 *616d6520736574206f6620636f6d6d616e647320617320616e20607573657227206275740a2020 *2020206d617920757365206d61736b73206f6e206b69636b7320616e642062616e732e20536368 *656d6520636f6d6d616e6473206d61792062652061646465640a20202020207768696368207265 *71756972652061207573657220746f206265206f662074686973206c6576656c2e0a0a2020332e *2060626f743a757365722d667269656e6427202d20496e207468652064656661756c7420636f6e *66696775726174696f6e206120757365722077686f20697320610a2020202020667269656e6420 *77696c6c2062652061626c6520746f20646f2065766572797468696e672073686f7274206f6620 *73746f7070696e672074686520626f742e0a2020202020416761696e2c207468657265206d6179 *206265207573657220616464656420636f6d6d616e647320746861742072657175697265206120 *68696768657220757365720a20202020206c6576656c2e0a0a2020342e2060626f743a75736572 *2d6d617374657227202d20546869732069732074686520686967686573742075736572206c6576 *656c20616e6420686173206163636573730a2020202020746f2065766572792066656174757265 *206f662074686520626f742e0a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e *6f64653a2050726f74656374696f6e2c20204e6578743a204175746f6d61746963204f702c2020 *507265763a2055736572204c6576656c732c202055703a205573696e672074686520426f740a0a *50726f74656374696f6e0a3d3d3d3d3d3d3d3d3d3d0a0a41207573657220616464656420766961 *20536368656d652c207468652060626f742e7573657273272066696c652c206f72206021616464 *7573657227206d61792062650a70726f7465637465642066726f6d206265696e672064656f7065 *642c206b69636b65642c206f722062616e6e65642e205468657265206172652063757272656e74 *6c79206e6f0a73796d626f6c6963206c6576656c7320696e20536368656d653b206a7573742075 *736520746865206e756d6572696320636f64652e0a0a2020302e204e6f2070726f74656374696f *6e0a0a2020312e204e6f2062616e2e204966206120757365722069732062616e6e656420746865 *20626f742077696c6c20756e62616e2068696d2e2e0a0a2020322e204e6f206b69636b2e205468 *652075736572206d6179207374696c6c206265206b69636b6564206275742074686520626f7420 *77696c6c206b69636b62616e207468650a2020202020757365722077686f206b69636b65642074 *68652070726f74656374656420757365722e0a0a2020332e204e6f2064656f702e205468652062 *6f742077696c6c20656e73757265207468617420746865207573657220616c77617973206d6169 *6e7461696e730a20202020206f70657261746f72207374617475732e0a0a0a1f0a46696c653a20 *626f626f742b2b2e696e666f2c20204e6f64653a204175746f6d61746963204f702c2020507265 *763a2050726f74656374696f6e2c202055703a205573696e672074686520426f740a0a4175746f *6d61746963204f700a3d3d3d3d3d3d3d3d3d3d3d3d0a0a412075736572206d6179206265206175 *746f6d61746963616c6c7920676976656e206f70657261746f72207374617475732075706f6e20 *656e746572696e6720610a6368616e6e656c2e205365742074686520414f50206669656c642074 *6f2022302220746f2064697361626c65206175746f2d6f70206f722022312220746f20656e6162 *6c650a6175746f2d6f702e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64 *653a20536372697074696e672c20204e6578743a20436f6e6365707420496e6465782c20205072 *65763a205573696e672074686520426f742c202055703a20546f700a0a536372697074696e670a *2a2a2a2a2a2a2a2a2a0a0a426f626f742b2b2773206d6f737420706f77657266756c2066656174 *7572652069732069747320736372697074696e672073797374656d2e20596f752077726974650a *73637269707473207573696e67204775696c6520536368656d652e2054686973206d616e75616c *20646f6573206e6f7420636f76657220686f7720746f20757365204775696c650a6f7220686f77 *20746f206c6561726e20536368656d652e202a4e6f7465204775696c65205265666572656e6365 *204d616e75616c3a20286775696c6529546f702c20666f720a746865204775696c652072656665 *72656e6365206d616e75616c20616e640a3c687474703a2f2f7777772e6363732e6e65752e6564 *752f686f6d652f646f7261692f742d792d736368656d652f742d792d736368656d652e68746d6c *3e20666f7220610a676f6f64207475746f7269616c206f6e20536368656d652e0a0a2020204e6f *7465207468617420696e2070726576696f75732076657273696f6e732074686520736372697074 *696e6720636f6d6d616e647320776865726520696e207468650a666f726d2060626f742d46554e *4354494f4e272e205468657920617265206e6f7720696e2074686520666f726d2060626f743a46 *554e4354494f4e272e20546865206f6c640a6e616d657320617265207374696c6c20617661696c *61626c652c2062757420617265206465707265636174656420616e642077696c6c206265207265 *6d6f76656420696e0a426f626f742b2b20332e302e204e657720636f6d6d616e64732061726520 *6f6e6c7920617661696c61626c652077697468207468652060626f743a27207072656669782e0a *54686520636f6d6d616e6420607065726c202d7069202d65206060732f626f742d2f626f743a2f *67272720594f55522d46494c4553272073686f756c6420626520656e6f7567680a746f20636f6e *7665727420796f757220636f646520746f2075736520746865206e65772066756e6374696f6e73 *2e0a0a2a204d656e753a0a0a2a20416464696e67204e657720436f6d6d616e64733a3a0a2a2048 *6f6f6b733a3a0a2a20536368656d652055736572204c6576656c733a3a0a2a2053656e64696e67 *204d657373616765733a3a0a2a204d69736320536372697074696e672053747566663a3a0a0a1f *0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a20416464696e67204e657720 *436f6d6d616e64732c20204e6578743a20486f6f6b732c2020507265763a20536372697074696e *672c202055703a20536372697074696e670a0a416464696e67204e657720436f6d6d616e64730a *3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a0a416464696e672061206e657720636f6d6d61 *6e642069732073696d706c652e20546f2072656769737465722061206e657720636f6d6d616e64 *207573650a60626f743a616464636f6d6d616e64272e205468652070726f746f7479706520666f *722060626f743a616464636f6d6d616e64272069730a6028626f743a616464636f6d6d616e6420 *6e616d652066756e63206e656564732d6368616e6e656c3f206e756d2d6f662d61726773206d69 *6e2d6c6576656c29272e205468650a606e616d6527206973206120737472696e67207265707265 *73656e74696e6720746865206e616d65206f662074686520636f6d6d616e64206265696e672061 *646465642e0a6066756e632720697320612066756e6374696f6e20616363657074696e6720606e *756d2d6f662d617267732720617267756d656e74732e0a606e656564732d6368616e6e656c3f27 *206973206120626f6f6c20746861742069732074727565206966207468652066756e6374696f6e *206e65656473207468650a6368616e6e656c206e616d6520617320697473206669727374206172 *672c20616e642066616c7365206f74686572776973652e20606e756d2d6f662d61726773272069 *730a746865206e756d626572206f662061726773206066756e63272077696c6c2074616b652061 *6e64206d7573742062652077697468696e207a65726f2028302920616e640a7477656e74792028 *3230292e20606d696e2d6c6576656c27206973206f6e65206f6620746865202a4e6f7465205363 *68656d652055736572204c6576656c733a3a2e20410a75736572206d757374206265206174206c *65617374206120606d696e2d6c6576656c27207573657220746f2075736520746865206e657720 *636f6d6d616e642e204e6f6e650a6f662074686520617267756d656e7473206172652067756172 *616e7465656420746f206265207061737365643b2069662074686579206172656e277420746865 *79206172650a73657420746f2074686520656d70747920737472696e6720602222272e20416e20 *6578616d706c65206f662061206e657720636f6d6d616e6420776f756c642062653a0a0a202020 *202028646566696e65202868656c6c6f206368616e6e656c206e616d65290a2020202020202028 *69662028737472696e673d3f206e616d65202222290a20202020202020202028626f743a736179 *206368616e6e656c202248656c6c6f20776f726c642122290a20202020202020202028626f743a *736179206368616e6e656c2028737472696e672d617070656e64202248656c6c6f2022206e616d *65202221222929290a20202020200a202020202028626f743a616464636f6d6d616e6420226865 *6c6c6f222068656c6c6f20237420322030290a0a202020546869732077696c6c20646973706c61 *79202248656c6c6f20576f726c6421222069662063616c6c656420617320602168656c6c6f2720 *616e64202248656c6c6f0a576f726c6420605553455227222069662063616c6c65642061732060 *2168656c6c6f2055534552272e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e *6f64653a20486f6f6b732c20204e6578743a20536368656d652055736572204c6576656c732c20 *20507265763a20416464696e67204e657720436f6d6d616e64732c202055703a20536372697074 *696e670a0a486f6f6b730a3d3d3d3d3d0a0a486f6f6b7320617265206120706f77657266756c20 *66656174757265206f6620426f626f742b2b2e20486f6f6b732061726520612068796272696420 *6f662069726349490a616e642074696e79206675677565202861204d554420626f742920686f6f *6b7320776974682061206c6974746c6520626974206f6620657874726120737475666620616464 *65640a696e2e205468652062617369632069646561206f66206120686f6f6b2069662074686174 *20796f75206d617463682061207465787420616761696e737420726567756c61720a6578707265 *7373696f6e20616e642063616c6c20612066756e6374696f6e206966207465787420696e206120 *6d657373616765206d61746368657320746861742072656765782e0a5468652064696666657265 *6e74207479706573206f6620686f6f6b732070726f766964656420627920426f626f742b2b2063 *6f72726573706f6e6420746f207468650a646966666572656e7420636c6173736573206f66206d *65737361676573207468617420426f626f742b2b2063616e20726563696576652e204120486f6f *6b20616c736f206861730a7365766572616c2070726f706572746965732c20696e636c7564696e *6720697473207072696f7269747920616e642077686574686572206f72206e6f74206974206973 *20610a66616c6c7468726f75676820686f6f6b2e20486967686572207072696f7269747920686f *6f6b7320617265206578656375746564206265666f7265206c6f7765720a7072696f7269747920 *686f6f6b7320616e642066616c6c7468726f75676820686f6f6b73206172652065786563757465 *64206265666f72650a6e6f6e2d66616c6c7468726f75676820686f6f6b73206f66207468652073 *616d65207072696f726974792e20412066616c6c7468726f75676820686f6f6b2063616e0a6d61 *74636820616e642070726f63657373696e67206f6620686f6f6b732077696c6c20636f6e74696e *75653b20617320736f6f6e206173207468652066697273740a6e6f6e2d66616c6c7468726f7567 *6820686f6f6b73206d6174636865732070726f63657373696e67206f6620686f6f6b732073746f *70732e0a0a2a204d656e753a0a0a2a204372656174696e67206120486f6f6b3a3a0a2a20486f6f *6b2054797065733a3a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a *204372656174696e67206120486f6f6b2c20204e6578743a20486f6f6b2054797065732c202050 *7265763a20486f6f6b732c202055703a20486f6f6b730a0a4372656174696e67206120486f6f6b *0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a546f206164642061206e657720686f6f6b20796f75 *20757365207468652066756e6374696f6e2060626f743a616464686f6f6b272e2060626f743a61 *6464686f6f6b272069730a70726f746f7479706564206173206028626f743a616464686f6f6b20 *747970652072656765782066756e6374696f6e207072692066616c6c206e616d6529272e206074 *797065270a737065636966696573207468652074797065206f6620686f6f6b2028746865207479 *706573206f6620686f6f6b7320617265206c697374656420696e202a4e6f746520486f6f6b0a54 *797065733a3a292e20607265676578272069732061207374616e6461726420726567756c617220 *65787072657373696f6e2e20496620607265676578272069730a6d6174636865642c206066756e *6374696f6e272077696c6c2062652063616c6c65642e206066756e6374696f6e272077696c6c20 *74616b65206120646966666572656e740a6e756d626572206f66206172677320646570656e6469 *6e67206f6e2074686520686f6f6b20747970652e20607072692720737065636966696573207468 *65207072696f726974790a6f662074686520686f6f6b2d2d686967686572207072696f72697479 *20686f6f6b73206172652065786563757465642066697273742e205468697320617267756d656e *742069730a6f7074696f6e616c20616e642064656661756c747320746f206030272e206066616c *6c2720697320602374272069662074686520686f6f6b20697320610a66616c6c7468726f756768 *20686f6f6b20616e6420602366272069732074686520686f6f6b206973206e6f7420612066616c *6c7468726f75676820686f6f6b2e20546869730a61726720697320616c736f206f7074696f6e61 *6c20616e642064656661756c7420746f20602374272e20606e616d652720697320746865206f70 *74696f6e616c206e616d650a6f662074686520686f6f6b20746861742064656661756c74732074 *6f202244454641554c54222e20496620796f752073657420746865206e616d65207468656e2079 *6f750a63616e2068617665206d6f7265207468616e206f6e6520686f6f6b2074686174206d6174 *63686573207468652073616d65207265676578702c206173206c6f6e672061730a746865792068 *617665207468652073616d65206e616d652e20452e672e20696e2061206c6f6720736372697074 *20796f7520636f756c642068617665207468650a7265676578707320666f7220746865206c6f67 *2066756e6374696f6e20616c6c2062652060222e2a222720616e6420736574207468656972206e *616d657320746f0a60226c6f67222720746f2061766f6964206120636f6e666c69637420776974 *68206f7468657220686f6f6b732e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c2020 *4e6f64653a20486f6f6b2054797065732c2020507265763a204372656174696e67206120486f6f *6b2c202055703a20486f6f6b730a0a486f6f6b2054797065730a2d2d2d2d2d2d2d2d2d2d0a0a48 *6572652069732061206c697374206f662074686520766172696f757320686f6f6b732061726520 *6e6f746573206f6e2065616368206f6e652e205468652067656e6572616c0a666f726d6174206f *66206120686f6f6b2069733a0a0a2020202a2060686f6f6b732f6e616d65272028746869732069 *732074686520536368656d65207661726961626c65206e616d65206f662074686520686f6f6b29 *0a20202020202020202d204465736372697074696f6e206f662074686520686f6f6b0a0a202020 *20202020202d20415247312041524732202e2e2e204152474e0a20202020202020202020202020 *2d20415247313a20646573630a0a202020202020202020202020202d20415247323a2064657363 *0a0a202020202020202020202020202d202e2e2e0a0a202020202020202020202020202d204152 *474e3a20646573630a0a2020205468617420736169642c206865726520697320746865206c6973 *74206f6620617661696c61626c6520686f6f6b733a204649584d453a20777269746520646f6373 *0a0a2020202a2060686f6f6b732f616374696f6e270a20202020202020202d205468697320686f *6f6b20697320747269676765726564207768656e20736f6d656f6e6520706572666f726d732061 *6e20616374696f6e2e0a0a20202020202020202d2046524f4d2c20544f2c20414354494f4e0a20 *2020202020202020202020202d2046524f4d3a2074686973206973207468652061646472657373 *206f662074686520706572736f6e207468617420706572666f726d65640a202020202020202020 *20202020202074686520616374696f6e20696e2074686520666f726d20604e49434b2021205553 *4552204020484f5354272028776974686f7574207468650a202020202020202020202020202020 *737061636573292e0a0a202020202020202020202020202d20544f3a2054686973206973207468 *6520746172676574206f662074686520616374696f6e2c20776869636820697320656974686572 *20610a2020202020202020202020202020206368616e6e656c206f722074686520426f74277320 *6e69636b2e0a0a202020202020202020202020202d20414354494f4e3a20546869732069732074 *68652074657874206f662074686520616374696f6e2e20452e672e20696620736f6d656f6e650a *20202020202020202020202020202064696420602a20666f6f62617220646f65732062617a272c *207468656e20414354494f4e20776f756c642062652074686520737472696e670a202020202020 *2020202020202020206022646f65732062617a22272e0a0a2020202a2060686f6f6b732f6e6963 *6b6e616d65270a20202020202020202d204465736372697074696f6e206f662074686520686f6f *6b0a0a20202020202020202d2023206f6620617267730a202020202020202020202020202d2060 *61726731273a20646573630a0a2020202a2060686f6f6b732f7369676e6f6666270a2020202020 *2020202d204465736372697074696f6e206f662074686520686f6f6b0a0a20202020202020202d *2023206f6620617267730a202020202020202020202020202d206061726731273a20646573630a *0a2020202a2060686f6f6b732f63746370270a20202020202020202d204465736372697074696f *6e206f662074686520686f6f6b0a0a20202020202020202d2023206f6620617267730a20202020 *2020202020202020202d206061726731273a20646573630a0a2020202a2060686f6f6b732f6374 *63702d7265706c79270a20202020202020202d204465736372697074696f6e206f662074686520 *686f6f6b0a0a20202020202020202d2023206f6620617267730a20202020202020202020202020 *2d206061726731273a20646573630a0a2020202a2060686f6f6b732f646973636f6e6e65637427 *0a20202020202020202d204465736372697074696f6e206f662074686520686f6f6b0a0a202020 *20202020202d2023206f6620617267730a202020202020202020202020202d206061726731273a *20646573630a0a2020202a2060686f6f6b732f666c6f6f64270a20202020202020202d20446573 *6372697074696f6e206f662074686520686f6f6b0a0a20202020202020202d2023206f66206172 *67730a202020202020202020202020202d206061726731273a20646573630a0a2020202a206068 *6f6f6b732f696e76697465270a20202020202020202d204465736372697074696f6e206f662074 *686520686f6f6b0a0a20202020202020202d2023206f6620617267730a20202020202020202020 *2020202d206061726731273a20646573630a0a2020202a2060686f6f6b732f6a6f696e270a2020 *2020202020202d204465736372697074696f6e206f662074686520686f6f6b0a0a202020202020 *20202d2023206f6620617267730a202020202020202020202020202d206061726731273a206465 *73630a0a2020202a2060686f6f6b732f6b69636b270a20202020202020202d2044657363726970 *74696f6e206f662074686520686f6f6b0a0a20202020202020202d2023206f6620617267730a20 *2020202020202020202020202d206061726731273a20646573630a0a2020202a2060686f6f6b73 *2f70617274270a20202020202020202d204465736372697074696f6e206f662074686520686f6f *6b0a0a20202020202020202d2023206f6620617267730a202020202020202020202020202d2060 *61726731273a20646573630a0a2020202a2060686f6f6b732f6d6f6465270a2020202020202020 *2d204465736372697074696f6e206f662074686520686f6f6b0a0a20202020202020202d202320 *6f6620617267730a202020202020202020202020202d206061726731273a20646573630a0a2020 *202a2060686f6f6b732f6d657373616765270a20202020202020202d204465736372697074696f *6e206f662074686520686f6f6b0a0a20202020202020202d2023206f6620617267730a20202020 *2020202020202020202d206061726731273a20646573630a0a2020202a2060686f6f6b732f6e6f *74696365270a20202020202020202d204465736372697074696f6e206f662074686520686f6f6b *0a0a20202020202020202d2023206f6620617267730a202020202020202020202020202d206061 *726731273a20646573630a0a2020202a2060686f6f6b732f7075626c6963270a20202020202020 *202d204465736372697074696f6e206f662074686520686f6f6b0a0a20202020202020202d2023 *206f6620617267730a202020202020202020202020202d206061726731273a20646573630a0a20 *20202a2060686f6f6b732f7075626c69632d6e6f74696365270a20202020202020202d20446573 *6372697074696f6e206f662074686520686f6f6b0a0a20202020202020202d2023206f66206172 *67730a202020202020202020202020202d206061726731273a20646573630a0a2020202a206068 *6f6f6b732f726177270a20202020202020202d204465736372697074696f6e206f662074686520 *686f6f6b0a0a20202020202020202d2023206f6620617267730a20202020202020202020202020 *2d206061726731273a20646573630a0a2020202a2060686f6f6b732f74696d6572270a20202020 *202020202d204465736372697074696f6e206f662074686520686f6f6b0a0a2020202020202020 *2d2023206f6620617267730a202020202020202020202020202d206061726731273a2064657363 *0a0a2020202a2060686f6f6b732f746f706963270a20202020202020202d204465736372697074 *696f6e206f662074686520686f6f6b0a0a20202020202020202d2023206f6620617267730a2020 *20202020202020202020202d206061726731273a20646573630a0a2020202a2060686f6f6b732f *6463632f626567696e270a20202020202020202d205468697320686f6f6b206973207472696767 *65726564207768656e2061207573657220626567696e7320612044434320434841542077697468 *207468650a20202020202020202020626f742e0a0a20202020202020202d2046524f4d0a202020 *202020202020202020202d2046524f4d3a20546869732069732074686520757365722773206164 *647265737320696e2074686520666f726d0a202020202020202020202020202020606e69636b21 *7573657240686f7374272e0a0a2020202a2060686f6f6b732f6463632f6d657373616765270a20 *202020202020202d205468697320686f6f6b20697320747269676765726564207768656e206120 *757365722073656e64732061206d65737361676520746f2074686520626f740a20202020202020 *2020207468726f75676820612044434320434841540a0a20202020202020202d2046524f4d204d *4553534147450a202020202020202020202020202d2046524f4d3a205468697320697320746865 *20757365722773206164647265737320696e2074686520666f726d0a2020202020202020202020 *20202020606e69636b217573657240686f7374272e0a0a202020202020202020202020202d204d *4553534147453a205468697320697320746865206d657373616765207468652075736572207365 *6e7420746f2074686520626f742e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c2020 *4e6f64653a20536368656d652055736572204c6576656c732c20204e6578743a2053656e64696e *67204d657373616765732c2020507265763a20486f6f6b732c202055703a20536372697074696e *670a0a536368656d652055736572204c6576656c730a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d *3d0a0a5468657265206172652066697665206c6576656c73207468617420612075736572206d61 *79206265207768656e20696e746572666163696e672077697468206120626f743a0a4e4f4e452c *20555345522c20545255535445445f555345522c20465249454e442c204d41535445522e205468 *6520536368656d65207661726961626c657320666f72207468650a75736572206c6576656c7320 *6172652060626f743a757365722d6e6f6e65272c2060626f743a757365722d75736572272c2060 *626f743a757365722d74727573746564272c0a60626f743a757365722d667269656e64272c2061 *6e642060626f743a757365722d6d6173746572272e20536565202a4e6f74652055736572204c65 *76656c733a3a20666f720a6d6f726520696e666f726d6174696f6e206f6e2055736572204c6576 *656c732e0a0a2020205768656e20616464696e672061206e657720636f6d6d616e642c20746869 *6e6b2061626f75742077686f2073686f756c642062652061626c6520746f207573652069742e0a *497320796f757220636f6d6d616e6420612067656e6572616c20707572706f736520636f6d6d61 *6e6420746861742068656c707320746865206368616e6e656c2028652e672e0a60217365656e27 *2920746861742065766572796f6e652073686f756c642062652061626c6520746f207573653f20 *4f7220697320697420736f6d657468696e6720746861740a73686f756c64206265207265737472 *69637465643f20536565202a4e6f74652055736572204c6576656c733a3a20666f7220696e666f *726d6174696f6e206f6e20776861740a6c6576656c2075736572732063616e20646f2077686174 *207769746820746865206275696c7420696e20626f7420636f6d6d616e647320616e6420746869 *6e6b2061626f75740a77686174206c6576656c2061207573657220796f757220636f6d6d616e64 *2069732074617267657474656420746f77617264732e20596f75206d757374206265205f766572 *795f0a6361726566756c207768656e20676976696e67206e657720636f6d6d616e647320746f20 *6c6f776572206c6576656c207573657273206265636175736520796f752063616e0a646f206261 *736963616c6c792065766572797468696e672074686520626f742063616e20646f207769746820 *61207363726970742e2041732074686520736372697074696e670a696e74657266616365206265 *636f6d6573206d6f726520706f77657266756c2c20796f75206d757374207468696e6b206d6f72 *652061626f757420776861742075736572730a63616e20757365206e657720636f6d6d616e6473 *20796f75206164642e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a *2053656e64696e67204d657373616765732c20204e6578743a204d69736320536372697074696e *672053747566662c2020507265763a20536368656d652055736572204c6576656c732c20205570 *3a20536372697074696e670a0a53656e64696e67204d657373616765730a3d3d3d3d3d3d3d3d3d *3d3d3d3d3d3d3d0a0a546865726520617265207365766572616c207479706573206f66206d6573 *736167657320796f752063616e2073656e64207769746820426f626f742b2b2066726f6d0a7363 *72697074732e205468657265206973207468652073696d706c652c206275742072617468657220 *6c696d697465642c2060626f743a736179272c0a60626f743a616374696f6e2720616e64206062 *6f743a6d7367272c20616e6420746865206d6f726520706f77657266756c2c20627574206c6f77 *6572206c6576656c2c0a60626f743a73656e642d4d455353414745272066756e6374696f6e732e *204d6f737420626f74732077696c6c2070726f6261626c79206f6e6c79206e656564207468650a *686967686572206c6576656c2066756e6374696f6e732c2062757420666f72207468652073616b *65206f66207768792d6e6f7420426f626f742b2b206c65747320796f750a75736520746865206c *6f776572206c6576656c2066756e6374696f6e732028696e2070726f6772657373292e0a0a2a20 *4d656e753a0a0a2a2048696768204c6576656c204d6573736167652046756e6374696f6e733a3a *0a2a204c6f77204c6576656c204d6573736167652046756e6374696f6e733a3a0a0a1f0a46696c *653a20626f626f742b2b2e696e666f2c20204e6f64653a2048696768204c6576656c204d657373 *6167652046756e6374696f6e732c20204e6578743a204c6f77204c6576656c204d657373616765 *2046756e6374696f6e732c2020507265763a2053656e64696e67204d657373616765732c202055 *703a2053656e64696e67204d657373616765730a0a2248696768204c6576656c22204d65737361 *67652046756e6374696f6e730a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d *2d2d2d2d0a0a2e2e2e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a *204c6f77204c6576656c204d6573736167652046756e6374696f6e732c2020507265763a204869 *6768204c6576656c204d6573736167652046756e6374696f6e732c202055703a2053656e64696e *67204d657373616765730a0a224c6f77204c6576656c22204d6573736167652046756e6374696f *6e730a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a5468652022 *4c6f77204c6576656c22206d6573736167696e672066756e6374696f6e7320616c6c6f7720796f *7520746f20646f207468696e6773206c696b652073656e640a43544350206d657373616765732e *20596f752070726f6261626c792077616e7420746f207265616420726663203238313220616e64 *20746865204354435020737065630a6265666f7265207573696e672074686573652e2049662079 *6f752068617665206e6f2069646561207768617420746865736520646f2c207265616420726663 *20323831320a2849524320436c69656e742050726f746f636f6c2920616e642043544350207370 *65632e2054686573652066756e6374696f6e7320616c6c2072657475726e0a602a756e73706563 *69666965642a2720616c776179732c20736f20646f6e277420757365207468652072657475726e *2076616c756520666f7220616e797468696e672e0a0a2020202a2060626f743a73656e642d4354 *435020746f20636f6d6d616e64206d657373616765272060746f27206973207468652074617267 *6574206f6620796f757220435443500a20202020206d6573736167652c2060636f6d6d616e6427 *20697320746865204354435020636f6d6d616e642c20616e6420606d6573736167652720697320 *7468650a20202020206d65737361676520286f7220617267756d656e747329206f662074686520 *636f6d6d616e642e204d616b65207375726520746f0a202020202060626f743a637463702d7175 *6f74652720746865206d657373616765210a0a0a1f0a46696c653a20626f626f742b2b2e696e66 *6f2c20204e6f64653a204d69736320536372697074696e672053747566662c2020507265763a20 *53656e64696e67204d657373616765732c202055703a20536372697074696e670a0a4d6973632e *20536372697074696e672053747566660a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a *0a5468657365206172652061206665772075736566756c207468696e6773207468617420492074 *686f756768742070656f706c652077726974696e6720736372697074730a6d696768742077616e *7420746f206b6e6f772e0a0a202020496620796f752077616e7420746f20657865637574652063 *6f6465207768656e2074686520626f742065786974732c206a75737420646f20606164642d686f *6f6b210a626f743a657869742d686f6f6b205448554e4b27207768657265205448554e4b206973 *20616e20617267756d656e746c6573732070726f6365647572652028610a7468756e6b292e2057 *68656e2074686520626f7420657869747320796f7572207468756e6b2077696c6c206265206361 *6c6c65642e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a20436f6e *6365707420496e6465782c20204e6578743a2046756e6374696f6e20496e6465782c2020507265 *763a20536372697074696e672c202055703a20546f700a0a436f6e6365707420496e6465780a2a *2a2a2a2a2a2a2a2a2a2a2a2a0a0a2a204d656e753a0a0a2a204261636b67726f756e64206f6e20 *486f6f6b733a20202020202020202020202020202020202020486f6f6b732e0a0a1f0a46696c65 *3a20626f626f742b2b2e696e666f2c20204e6f64653a2046756e6374696f6e20496e6465782c20 *204e6578743a205661726961626c6520496e6465782c2020507265763a20436f6e636570742049 *6e6465782c202055703a20546f700a0a46756e6374696f6e20496e6465780a2a2a2a2a2a2a2a2a *2a2a2a2a2a2a0a0a2a204d656e753a0a0a2a20616464636f6d6d616e643a202020202020202020 *20202020202020202020202020202020202020416464696e67204e657720436f6d6d616e64732e *0a2a20616464686f6f6b3a20202020202020202020202020202020202020202020202020202020 *2020204372656174696e67206120486f6f6b2e0a0a1f0a46696c653a20626f626f742b2b2e696e *666f2c20204e6f64653a205661726961626c6520496e6465782c2020507265763a2046756e6374 *696f6e20496e6465782c202055703a20546f700a0a5661726961626c6520496e6465780a2a2a2a *2a2a2a2a2a2a2a2a2a2a2a0a0a2a204d656e753a0a0a2a20657869742d686f6f6b3a2020202020 *2020202020202020202020202020202020202020202020204d69736320536372697074696e6720 *53747566662e0a2a20686f6f6b732f616374696f6e3a2020202020202020202020202020202020 *202020202020202020486f6f6b2054797065732e0a2a20686f6f6b732f637463703a2020202020 *2020202020202020202020202020202020202020202020486f6f6b2054797065732e0a2a20686f *6f6b732f637463702d7265706c793a20202020202020202020202020202020202020202020486f *6f6b2054797065732e0a2a20686f6f6b732f6463632f626567696e3a2020202020202020202020 *202020202020202020202020486f6f6b2054797065732e0a2a20686f6f6b732f6463632f6d6573 *736167653a202020202020202020202020202020202020202020486f6f6b2054797065732e0a2a *20686f6f6b732f646973636f6e6e6563743a202020202020202020202020202020202020202020 *20486f6f6b2054797065732e0a2a20686f6f6b732f666c6f6f643a202020202020202020202020 *202020202020202020202020202020486f6f6b2054797065732e0a2a20686f6f6b732f696e7669 *74653a2020202020202020202020202020202020202020202020202020486f6f6b205479706573 *2e0a2a20686f6f6b732f6a6f696e3a202020202020202020202020202020202020202020202020 *20202020486f6f6b2054797065732e0a2a20686f6f6b732f6b69636b3a20202020202020202020 *202020202020202020202020202020202020486f6f6b2054797065732e0a2a20686f6f6b732f6d *6573736167653a20202020202020202020202020202020202020202020202020486f6f6b205479 *7065732e0a2a20686f6f6b732f6d6f64653a202020202020202020202020202020202020202020 *20202020202020486f6f6b2054797065732e0a2a20686f6f6b732f6e69636b6e616d653a202020 *202020202020202020202020202020202020202020486f6f6b2054797065732e0a2a20686f6f6b *732f6e6f746963653a2020202020202020202020202020202020202020202020202020486f6f6b *2054797065732e0a2a20686f6f6b732f706172743a202020202020202020202020202020202020 *20202020202020202020486f6f6b2054797065732e0a2a20686f6f6b732f7075626c69633a2020 *202020202020202020202020202020202020202020202020486f6f6b2054797065732e0a2a2068 *6f6f6b732f7075626c69632d6e6f746963653a2020202020202020202020202020202020202048 *6f6f6b2054797065732e0a2a20686f6f6b732f7261773a20202020202020202020202020202020 *20202020202020202020202020486f6f6b2054797065732e0a2a20686f6f6b732f7369676e6f66 *663a20202020202020202020202020202020202020202020202020486f6f6b2054797065732e0a *2a20686f6f6b732f74696d65723a20202020202020202020202020202020202020202020202020 *2020486f6f6b2054797065732e0a2a20686f6f6b732f746f7069633a2020202020202020202020 *20202020202020202020202020202020486f6f6b2054797065732e0a2a20757365722d66726965 *6e643a202020202020202020202020202020202020202020202020202020536368656d65205573 *6572204c6576656c732e0a2a20757365722d6d61737465723a2020202020202020202020202020 *20202020202020202020202020536368656d652055736572204c6576656c732e0a2a2075736572 *2d6e6f6e653a202020202020202020202020202020202020202020202020202020202053636865 *6d652055736572204c6576656c732e0a2a20757365722d747275737465643a2020202020202020 *202020202020202020202020202020202020536368656d652055736572204c6576656c732e0a2a *20757365722d757365723a20202020202020202020202020202020202020202020202020202020 *20536368656d652055736572204c6576656c732e0a0a0a1f0a546167205461626c653a0a4e6f64 *653a20546f707f3532320a4e6f64653a20496e74726f64756374696f6e7f313736380a4e6f6465 *3a20436f6e66696775726174696f6e7f313935360a4e6f64653a20436f6e66696775726174696f *6e2046696c65737f323233390a4e6f64653a20626f742e636f6e667f323434360a4e6f64653a20 *7365727665722073796e7461787f333837320a4e6f64653a206368616e6e656c2073796e746178 *7f343732300a4e6f64653a20626f742e75736572737f353534370a4e6f64653a20436f6e666967 *75726174696f6e2046696c6520506c6163656d656e747f363433380a4e6f64653a205573696e67 *2074686520426f747f363930380a4e6f64653a2055736572204c6576656c737f373131310a4e6f *64653a2050726f74656374696f6e7f383535360a4e6f64653a204175746f6d61746963204f707f *393135370a4e6f64653a20536372697074696e677f393431320a4e6f64653a20416464696e6720 *4e657720436f6d6d616e64737f31303337330a4e6f64653a20486f6f6b737f31313633370a4e6f *64653a204372656174696e67206120486f6f6b7f31323630380a4e6f64653a20486f6f6b205479 *7065737f31333734340a4e6f64653a20536368656d652055736572204c6576656c737f31373231 *350a4e6f64653a2053656e64696e67204d657373616765737f31383334310a4e6f64653a204869 *6768204c6576656c204d6573736167652046756e6374696f6e737f31383934390a4e6f64653a20 *4c6f77204c6576656c204d6573736167652046756e6374696f6e737f31393136300a4e6f64653a *204d69736320536372697074696e672053747566667f31393931300a4e6f64653a20436f6e6365 *707420496e6465787f32303332360a4e6f64653a2046756e6374696f6e20496e6465787f323035 *30380a4e6f64653a205661726961626c6520496e6465787f32303736390a1f0a456e6420546167 *205461626c650a newhex *5468697320697320626f626f742b2b2e696e666f2c2070726f6475636564206279206d616b6569 *6e666f2076657273696f6e20342e372066726f6d0a626f626f742b2b2e746578696e666f2e0a0a *202020546869732066696c6520646f63756d656e747320426f626f742b2b20627920436c696e74 *6f6e20456261646920616e6420457469656e6e65204265726e6172640a286f726967696e616c20 *617574686f722c206e6f206c6f6e67657220776f726b73206f6e2070726f6772616d292e0a0a20 *2020436f7079726967687420323030322c3230303420436c696e746f6e2045626164690a0a2020 *205065726d697373696f6e206973206772616e74656420746f20636f70792c2064697374726962 *75746520616e642f6f72206d6f64696679207468697320646f63756d656e740a756e6465722074 *6865207465726d73206f662074686520474e55204672656520446f63756d656e746174696f6e20 *4c6963656e73652c2056657273696f6e20312e31206f720a616e79206c61746572207665727369 *6f6e207075626c697368656420627920746865204672656520536f66747761726520466f756e64 *6174696f6e3b2077697468206e6f0a496e76617269616e742053656374696f6e732c2077697468 *206e6f2046726f6e742d436f7665722054657874732c20616e642077697468206e6f204261636b *2d436f7665720a54657874732e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e *6f64653a20546f702c20204e6578743a20496e74726f64756374696f6e2c2020507265763a2028 *646972292c202055703a2028646972290a0a2020205468697320646f63756d656e742064657363 *726962657320426f626f742b2b20627920436c696e746f6e20456261646920616e642045746965 *6e6e65204265726e6172640a286f726967696e616c20617574686f722c206e6f206c6f6e676572 *20776f726b73206f6e2070726f6772616d292e0a0a2020205468697320646f63756d656e742061 *70706c69657320746f2076657273696f6e20322e312e35206f66207468652070726f6772616d20 *6e616d656420426f626f742b2b0a0a202020436f7079726967687420323030322c323030342043 *6c696e746f6e2045626164690a0a2020205065726d697373696f6e206973206772616e74656420 *746f20636f70792c206469737472696275746520616e642f6f72206d6f64696679207468697320 *646f63756d656e740a756e64657220746865207465726d73206f662074686520474e5520467265 *6520446f63756d656e746174696f6e204c6963656e73652c2056657273696f6e20312e31206f72 *0a616e79206c617465722076657273696f6e207075626c69736865642062792074686520467265 *6520536f66747761726520466f756e646174696f6e3b2077697468206e6f0a496e76617269616e *742053656374696f6e732c2077697468206e6f2046726f6e742d436f7665722054657874732c20 *616e642077697468206e6f204261636b2d436f7665720a54657874732e0a0a2a204d656e753a0a *0a2a20496e74726f64756374696f6e3a3a0a2a20436f6e66696775726174696f6e3a3a0a2a2055 *73696e672074686520426f743a3a0a2a20536372697074696e673a3a0a2a20436f6e6365707420 *496e6465783a3a0a2a2046756e6374696f6e20496e6465783a3a0a2a205661726961626c652049 *6e6465783a3a0a0a202d2d2d205468652044657461696c6564204e6f6465204c697374696e6720 *2d2d2d0a0a436f6e66696775726174696f6e0a0a2a20436f6e66696775726174696f6e2046696c *65733a3a0a2a20436f6e66696775726174696f6e2046696c6520506c6163656d656e743a3a0a0a *436f6e66696775726174696f6e2046696c65730a0a2a20626f742e636f6e663a3a0a2a20626f74 *2e75736572733a3a0a0a626f742e636f6e660a0a2a207365727665722073796e7461783a3a0a2a *206368616e6e656c2073796e7461783a3a0a0a5573696e6720426f626f742b2b0a0a2a20537461 *7274696e672074686520426f743a3a0a2a2055736572204c6576656c733a3a0a2a2050726f7465 *6374696f6e3a3a0a2a204175746f6d61746963204f703a3a0a2a204275696c742d496e20436f6d *6d616e64733a3a0a0a536372697074696e670a0a2a20416464696e67204e657720436f6d6d616e *64733a3a0a2a20486f6f6b733a3a0a2a20536368656d652055736572204c6576656c733a3a0a2a *2053656e64696e67204d657373616765733a3a0a2a204d69736320536372697074696e67205374 *7566663a3a0a0a486f6f6b730a0a2a204372656174696e67206120486f6f6b3a3a0a2a20486f6f *6b2054797065733a3a0a0a53656e64696e67204d657373616765730a0a2a2048696768204c6576 *656c204d6573736167652046756e6374696f6e733a3a0a2a204c6f77204c6576656c204d657373 *6167652046756e6374696f6e733a3a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20 *204e6f64653a20496e74726f64756374696f6e2c20204e6578743a20436f6e6669677572617469 *6f6e2c2020507265763a20546f702c202055703a20546f700a0a3120496e74726f64756374696f *6e0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a0a54686973206d616e75616c206665656c7320616275 *73656420616e64206e65676c656374656420626563617573652069742068617320616c6d6f7374 *206e6f20636f6e74656e742e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f *64653a20436f6e66696775726174696f6e2c20204e6578743a205573696e672074686520426f74 *2c2020507265763a20496e74726f64756374696f6e2c202055703a20546f700a0a3220436f6e66 *696775726174696f6e0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a0a426f626f742b2b2069732065 *61737920746f20636f6e6669677572652e205365652074686520606578616d706c657327206469 *726563746f727920666f7220616e0a6578616d706c6520636f6e66696775726174696f6e2e0a0a *2a204d656e753a0a0a2a20436f6e66696775726174696f6e2046696c65733a3a0a2a20436f6e66 *696775726174696f6e2046696c6520506c6163656d656e743a3a0a0a1f0a46696c653a20626f62 *6f742b2b2e696e666f2c20204e6f64653a20436f6e66696775726174696f6e2046696c65732c20 *204e6578743a20436f6e66696775726174696f6e2046696c6520506c6163656d656e742c202050 *7265763a20436f6e66696775726174696f6e2c202055703a20436f6e66696775726174696f6e0a *0a322e3120436f6e66696775726174696f6e2046696c65730a3d3d3d3d3d3d3d3d3d3d3d3d3d3d *3d3d3d3d3d3d3d3d3d0a0a2a204d656e753a0a0a2a20626f742e636f6e663a3a0a2a20626f742e *75736572733a3a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a2062 *6f742e636f6e662c20204e6578743a20626f742e75736572732c2020507265763a20436f6e6669 *6775726174696f6e2046696c65732c202055703a20436f6e66696775726174696f6e2046696c65 *730a0a322e312e3120626f742e636f6e660a2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a2a204d656e *753a0a0a2a207365727665722073796e7461783a3a0a2a206368616e6e656c2073796e7461783a *3a0a0a20202060626f742e636f6e662720636f6e7461696e73206b65792076616c756520706169 *72732073657061726174656420627920603d272e0a0a202020603c6b65793e203d203c76616c75 *653e270a0a202020436f6d6d656e74732061726520737461727465642077697468206120602327 *20616e642063617573652074686520656e74697265206c696e6520746f2062650a69676e6f7265 *642e205f4e6f746520746861742074686973206f6e6c7920776f726b73207768656e2074686520 *60232720697320746865206669727374206368617261637465720a6f6620746865206c696e655f *2e0a0a202020626f742e636f6e6620697320746865206d61696e20636f6e66696775726174696f *6e2066696c6520666f72206120426f626f742b2b2e2054686520617661696c61626c650a636f6e *66696775726174696f6e207661726961626c657320617265206c69737465642062656c6f772069 *6e2074686520666f726d617420225641524941424c450a3c64656661756c742d76616c75653e3a *206465736372697074696f6e220a0a2020202a204e49434b4e414d45203c426f626f743e3a2054 *6865206e69636b6e616d65206f662074686520626f7420284e49434b20697320616e20616c6961 *7320666f720a20202020204e49434b4e414d45290a0a2020202a20555345524e414d45203c626f *626f743e3a205468652049524320757365726e616d65206f662074686520626f740a0a2020202a *20434d4443484152203c213e3a2054686520636861726163746572207468617420707265666978 *657320636f6d6d616e647320676976656e20746f2074686520626f740a202020202028434f4d4d *414e4420697320616e20616c69617320666f7220434d4443484152290a0a2020202a204952434e *414d45203c49276d206120626f626f742b2b213e3a2054686520495243206e616d6520286f7220 *277265616c206e616d652729206f662074686520626f740a2020202020285245414c4e414d4520 *697320616e20616c69617320666f72204952434e414d45290a0a2020202a20555345524c495354 *203c626f742e75736572733e3a204e616d65206f66207468652066696c65207768657265207468 *6520757365726c6973742069732073746f7265640a0a2020202a20534849544c495354203c626f *742e736869743e3a204e616d65206f66207468652066696c652077686572652074686520736869 *746c6973742069732073746f7265640a0a2020202a204c4f4746494c45203c244c4f474449522f *626f742e6c6f673e3a204c6f636174696f6e206f662074686520626f74206c6f6766696c652028 *73657420746869730a2020202020746f20602f6465762f6e756c6c2720746f2064697361626c65 *206c6f6767696e67292e0a0a2020202a20534552564552203c4e6f6e653e3a2054686973207370 *65636966696573207468652073657276657220746f20636f6e6e65637420746f2e204e6f746520 *746861740a202020202074686973206861732061207370656369616c2073796e7461782e0a0a20 *20202a204348414e4e454c203c4e6f6e653e3a2054686973207370656369666965732061206368 *616e6e656c2074686520626f742077696c6c206a6f696e207768656e2069740a20202020207374 *617274732075702e205468697320616c736f206861732061207370656369616c2073796e746178 *2e0a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a20736572766572 *2073796e7461782c20204e6578743a206368616e6e656c2073796e7461782c2020507265763a20 *626f742e636f6e662c202055703a20626f742e636f6e660a0a322e312e312e3120736572766572 *2073796e7461780a2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e0a0a534552564552203d *205345525645525f4e414d45205b504f5254205b50415353574f52445d5d0a0a20202054686973 *2077696c6c206d616b6520426f626f742b2b20617474656d707420746f20636f6e6e6563742074 *6f205345525645525f4e414d45206f6e20706f72740a504f525420776974682074686520706173 *73776f72642050415353574f52442e205345525645525f4e414d452073686f756c642062652074 *68652061646472657373206f660a746865207365727665722e20504f525420616e642050415353 *574f524420617265206f7074696f6e616c2e20596f75206d617920757365206d6f726520746861 *6e206f6e650a736572766572206c696e653b20426f626f742b2b2077696c6c20617474656d7074 *20746f20636f6e6e65637420746f20746865206669727374206f6e6520616e642c2069660a6974 *206661696c732c2077696c6c20636f6e6e65637420746f20746865206e657874206f6e6520696e *20746865206c6973742e20546865726520697320616c736f20610a636f6d6d616e6420746f2063 *617573652074686520626f7420746f206379636c6520736572766572732e204174207468652070 *726573656e742074696d6520426f626f742b2b0a63616e6e6f7420636f6e6e65637420746f206d *6f7265207468616e206f6e652073657276657220617420612074696d652e205468697320697320 *6120706c616e6e65640a66656174757265206f6620332e30202877686963682069732061207665 *7279206c6f6e672077617920617761793b207468652063757272656e7420737472756374757265 *206f660a7468652070726f6772616d20776f756c64206d616b6520697420766572792064696666 *6963756c7420746f2061646420737570706f727420666f7220636f6e6e656374696e670a746f20 *6d756c7469706c65207365727665727320617420612074696d6520696e206120757361626c6520 *6d616e6e6572292e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a20 *6368616e6e656c2073796e7461782c2020507265763a207365727665722073796e7461782c2020 *55703a20626f742e636f6e660a0a322e312e312e32206368616e6e656c2073796e7461780a2e2e *2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e0a0a4348414e4e454c203d204e414d453a494e *495449414c5f4d4f4445533a4d4f4445535f544f5f4b4545503a4348414e4e454c5f4b45590a0a *202020596f75206d6179206861766520616e79206e756d626572206f66206368616e6e656c206c *696e65732e205768656e20426f626f742b2b207374617274732069742077696c6c0a617474656d *707420746f206a6f696e20616e64206761696e206f707320696e206576657279206368616e6e65 *6c206c69737465642e2049742077696c6c206a6f696e204e414d450a616e642073657420746865 *206368616e6e656c206d6f64657320746f20494e495449414c5f4d4f4445532028652e672e2022 *6e7422292069662069742069732061626c6520746f0a6761696e206f70657261746f7220737461 *7475732e2049742077696c6c207468656e206d61696e7461696e204d4f4445535f544f5f4b4545 *502e204966207468650a6368616e6e656c2072657175697265732061206b657920746f20656e74 *65722073696d706c7920736574204348414e4e454c5f4b45592e20457665727920617267756d65 *6e740a65786365707420666f72204e414d45206973206f7074696f6e616c2e0a0a202020412066 *6577206578616d706c65206c696e65733a0a0a202020604348414e4e454c203d2023666f6f3a6e *743a6e743a626172270a0a20202054686520626f742077696c6c206a6f696e206023666f6f2720 *7769746820746865206368616e6e656c206b657920606261722720616e642077696c6c20746865 *6e0a6d61696e7461696e20746865206d6f64657320606e74272e0a0a202020604348414e4e454c *203d20236261723a3a3a270a0a20202054686520626f742077696c6c206a6f696e206023626172 *2720616e642077696c6c206e6f742073657420616e79206d6f646573206e6f722077696c6c2069 *740a617474656d707420746f206d61696e7461696e20616e79206d6f6465732e0a0a1f0a46696c *653a20626f626f742b2b2e696e666f2c20204e6f64653a20626f742e75736572732c2020507265 *763a20626f742e636f6e662c202055703a20436f6e66696775726174696f6e2046696c65730a0a *322e312e3220626f742e75736572730a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a60626f742e75 *7365727327206973207468652064656661756c742066696c65206e616d65206f66207468652075 *7365726c6973742e204974206d6179206265206368616e6765640a696e2060626f742e636f6e66 *272e205468652066696c6520636f6e7461696e73206c696e657320776974682074686520666f72 *6d61743a0a0a202020604d41534b3a4348414e4e454c3a4c4556454c3a50524f54454354494f4e *3a4155544f2d4f50270a0a2020202a204d41534b2069732074686520686f7374206d61736b2028 *652e672e20602a212a757365726e616d650a20202020202e646f6d61696e2e636f6d2729206f66 *2074686520757365720a0a2020202a204348414e4e454c2069732061206368616e6e656c206d61 *736b206f6620746865206368616e6e656c732074686174207468652075736572206861730a2020 *20202070726976696c6967657320746f207573652074686520626f7420696e2028652e672e2060 *2a2720666f7220616c6c206368616e6e656c732c2060232a2720666f720a2020202020616c6c20 *6e6f6e2d6c6f63616c206368616e6e656c2c206023666f6f2a2720666f7220616c6c206368616e *6e656c73207374617274696e6720776974680a202020202022666f6f2c22206023626172272066 *6f72206368616e6e656c20222362617222206f6e6c792c206574632e290a0a2020202a204c4556 *454c206973207468652075736572206c6576656c206f6620746865207573657220282a4e6f7465 *2055736572204c6576656c733a3a292e0a0a2020202a2050524f54454354494f4e206973207468 *652070726f74656374696f6e206c6576656c206f6620746865207573657220282a4e6f74650a20 *2020202050726f74656374696f6e3a3a292e0a0a2020202a204155544f2d4f5020697320736574 *20746f20636f6e74726f6c207768657468657220612075736572206973206175746f6d61746963 *616c6c7920676976656e0a20202020206f70657261746f722070726976696c69676573206f6e20 *6368616e6e656c20656e74727920282a4e6f7465204175746f6d61746963204f703a3a292e0a0a *0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a20436f6e666967757261 *74696f6e2046696c6520506c6163656d656e742c2020507265763a20436f6e6669677572617469 *6f6e2046696c65732c202055703a20436f6e66696775726174696f6e0a0a322e3220436f6e6669 *6775726174696f6e2046696c6520506c6163656d656e740a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d *3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a0a426f626f742b2b2077696c6c206c6f6f6b20696e *20602f6574632f626f626f7470702f64656661756c742f2720666f72206974732064656661756c *7420636f6e6669672069660a6e6f6e6520697320737065636966696564206f6e2074686520636f *6d6d616e64206c696e652e205075742074686520636f6e66696775726174696f6e2066696c6573 *20796f750a77616e7420746f206265206c6f616465642062792064656661756c7420696e207468 *6973206469726563746f72792e20496620796f7520617265206e6f7420726f6f74206f720a796f *752077616e7420746f206861766520796f7572206f776e20706572736f6e616c20636f6e666967 *75726174696f6e2c2070757420697420696e0a607e2f2e626f626f7470702f636f6e6669672f64 *656661756c742f272e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a *205573696e672074686520426f742c20204e6578743a20536372697074696e672c202050726576 *3a20436f6e66696775726174696f6e2c202055703a20546f700a0a33205573696e6720426f626f *742b2b0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a0a4649584d453a20737475666620686572652e *2e2e0a0a2a204d656e753a0a0a2a205374617274696e672074686520426f743a3a0a2a20557365 *72204c6576656c733a3a0a2a2050726f74656374696f6e3a3a0a2a204175746f6d61746963204f *703a3a0a2a204275696c742d496e20436f6d6d616e64733a3a0a0a1f0a46696c653a20626f626f *742b2b2e696e666f2c20204e6f64653a205374617274696e672074686520426f742c20204e6578 *743a2055736572204c6576656c732c2020507265763a205573696e672074686520426f742c2020 *55703a205573696e672074686520426f740a0a332e31205374617274696e672074686520426f74 *0a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a0a54686520626f7420697320757375616c *6c7920696e7374616c6c65642077697468207468652062696e617279206e616d652060626f626f *747070272e20497420616363657074730a74686520666f6c6c6f77696e6720636f6d6d616e6420 *6c696e6520617267756d656e74733a0a0a2020202a20605b2d2d68656c705d5b2d685d27202d20 *53686f77732064657461696c65642068656c7020616e642065786974730a0a2020202a20605b2d *2d76657273696f6e5d5b2d765d27202d2053686f77732076657273696f6e20696e666f726d6174 *696f6e20616e642065786974730a0a2020202a20605b2d2d6e6f2d6261636b67726f756e645d5b *2d625d27202d2052756e20626f626f742b2b20696e2074686520666f726567726f756e640a0a20 *20202a20605b2d2d636f6e6669672d66696c652066696c655d5b2d665d27202d20557365206669 *6c6520696e7374656164206f662060626f742e636f6e66270a0a2020202a20605b2d2d636f6e66 *69672d646972206469725d5b2d645d27202d20557365206469722061732064697220746f206c6f *616420636f6e6669672066696c652066726f6d0a0a2020202a20605b2d2d636f6e666967206469 *725d5b2d635d27202d2053656172636820796f757220636f6e6669672070617468202864656661 *756c747320746f0a20202020206024484f4d452f2e626f626f7470702f636f6e6669672f272061 *6e64207468656e20602f6574632f626f626f7470702f272920666f722064697220616e640a2020 *2020207468656e206c6f61647320796f757220636f6e6669672064617461207573696e67206469 *720a0a2020202a20605b2d2d7379732d636f6e666967206469725d5b2d735d27202d204c6f6f6b *7320666f7220636f6e66696720696e20602f6574632f626f626f7470702f646972272e0a202020 *20204e6f7465207468617420746865207573657220646972206973207374696c6c207365617263 *6865642066697273740a0a2020202a20605b2d2d757365722d636f6e666967206469725d5b2d75 *5d27202d204c6f6f6b7320666f7220636f6e66696720696e0a20202020206024484f4d452f2e62 *6f626f7470702f636f6e6669672f6469722f272e204e6f74652074686174207468652073797374 *656d20646972206973207374696c6c0a2020202020736561726368656420616674657220746869 *7320696620646972206973206e6f7420666f756e642e0a0a2020202a20605b2d2d64656275675d *5b2d445d27204d616b657320426f626f742b2b207072696e7420646562756767696e6720696e66 *6f20616e642072756e20696e207468650a2020202020666f726567726f756e640a0a0a20202054 *68652064656661756c7420636f6e66696775726174696f6e20697320726561642066726f6d0a60 *24484f4d452f2e626f626f7470702f636f6e6669672f64656661756c742f2720616e6420746865 *6e20602f6574632f626f626f7470702f64656661756c742f272069660a74686520757365722063 *6f6e666967206973206e6f7420666f756e642e0a0a20202054686520626f742064656661756c74 *7320746f2072756e6e696e6720696e20746865206261636b67726f756e64206173206120646165 *6d6f6e2e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a2055736572 *204c6576656c732c20204e6578743a2050726f74656374696f6e2c2020507265763a2053746172 *74696e672074686520426f742c202055703a205573696e672074686520426f740a0a332e322055 *736572204c6576656c730a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a0a5468657265206172652073 *65766572616c2075736572206c6576656c7320617661696c61626c6520696e20426f626f742b2b *20746f2070726f766964652067726164617465640a61636365737320746f20636f6d6d616e6473 *2e206021616464757365722720616e642060626f742e7573657273272075736520746865206e75 *6d6572696320636f64653b0a536368656d65207573657320746865207465787475616c206e616d *6520666f7220746865206c6576656c2e2042792064656661756c7420286966206e6f2063617463 *682d616c6c0a73657474696e6720697320666f756e6420696e202a4e6f746520626f742e757365 *72733a3a2e2920612075736572206973206e6f74206576656e20610a60626f743a757365722d6e *6f6e652720616e642063616e6e6f742065786563757465202a616e792a20636f6d6d616e64732c *206576656e20636f6d6d616e64730a617661696c61626c6520746f2060626f743a757365722d6e *6f6e65272e0a0a2020302e2060626f743a757365722d6e6f6e6527202d204e6f202a6275696c74 *2d696e2a20636f6d6d616e6473206d6179206265206578656375746564205f62790a2020202020 *64656661756c745f2028636f6d6d616e6473206d61792062652061646465642066726f6d205363 *68656d6520746861742063616e2062652065786563757465640a20202020206279207573657273 *206f66206c6576656c206e6f6e6520616e6420746865206c6576656c2072657175697265642074 *6f2065786563757465206120636f6d6d616e640a20202020206d6179206265206368616e676564 *2066726f6d20536368656d65292e0a0a2020312e2060626f743a757365722d7573657227202d20 *57696c6c2062652061626c6520746f2065786563757465206d6f737420636f6d6d616e64732062 *7574206e6f740a2020202020616c6c20616e642063616e6e6f7420757365206d61736b73206f6e *206b69636b7320616e642062616e732e0a0a2020322e2060626f743a757365722d747275737465 *6427202d20466f72206275696c742d696e73207769746820612064656661756c7420636f6e6669 *6775726174696f6e0a2020202020746869732075736572206861732061636365737320746f2074 *68652073616d6520736574206f6620636f6d6d616e647320617320616e20607573657227206275 *740a20202020206d617920757365206d61736b73206f6e206b69636b7320616e642062616e732e *20536368656d6520636f6d6d616e6473206d61792062652061646465640a202020202077686963 *6820726571756972652061207573657220746f206265206f662074686973206c6576656c2e0a0a *2020332e2060626f743a757365722d667269656e6427202d20496e207468652064656661756c74 *20636f6e66696775726174696f6e206120757365722077686f20697320610a2020202020667269 *656e642077696c6c2062652061626c6520746f20646f2065766572797468696e672073686f7274 *206f662073746f7070696e672074686520626f742e0a2020202020416761696e2c207468657265 *206d6179206265207573657220616464656420636f6d6d616e6473207468617420726571756972 *6520612068696768657220757365720a20202020206c6576656c2e0a0a2020342e2060626f743a *757365722d6d617374657227202d20546869732069732074686520686967686573742075736572 *206c6576656c20616e6420686173206163636573730a2020202020746f20657665727920666561 *74757265206f662074686520626f742e0a0a0a1f0a46696c653a20626f626f742b2b2e696e666f *2c20204e6f64653a2050726f74656374696f6e2c20204e6578743a204175746f6d61746963204f *702c2020507265763a2055736572204c6576656c732c202055703a205573696e67207468652042 *6f740a0a332e332050726f74656374696f6e0a3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a0a41207573 *65722061646465642076696120536368656d652c207468652060626f742e757365727327206669 *6c652c206f722060216164647573657227206d61792062650a70726f7465637465642066726f6d *206265696e672064656f7065642c206b69636b65642c206f722062616e6e65642e205468657265 *206172652063757272656e746c79206e6f0a73796d626f6c6963206c6576656c7320696e205363 *68656d653b206a7573742075736520746865206e756d6572696320636f64652e0a0a2020302e20 *4e6f2070726f74656374696f6e0a0a2020312e204e6f2062616e2e204966206120757365722069 *732062616e6e65642074686520626f742077696c6c20756e62616e2068696d2e2e0a0a2020322e *204e6f206b69636b2e205468652075736572206d6179207374696c6c206265206b69636b656420 *6275742074686520626f742077696c6c206b69636b62616e207468650a20202020207573657220 *77686f206b69636b6564207468652070726f74656374656420757365722e0a0a2020332e204e6f *2064656f702e2054686520626f742077696c6c20656e7375726520746861742074686520757365 *7220616c77617973206d61696e7461696e730a20202020206f70657261746f7220737461747573 *2e0a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a204175746f6d61 *746963204f702c20204e6578743a204275696c742d496e20436f6d6d616e64732c202050726576 *3a2050726f74656374696f6e2c202055703a205573696e672074686520426f740a0a332e342041 *75746f6d61746963204f700a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a0a412075736572206d61 *79206265206175746f6d61746963616c6c7920676976656e206f70657261746f72207374617475 *732075706f6e20656e746572696e6720610a6368616e6e656c2e205365742074686520414f5020 *6669656c6420746f2022302220746f2064697361626c65206175746f2d6f70206f722022312220 *746f20656e61626c650a6175746f2d6f702e0a0a1f0a46696c653a20626f626f742b2b2e696e66 *6f2c20204e6f64653a204275696c742d496e20436f6d6d616e64732c2020507265763a20417574 *6f6d61746963204f702c202055703a205573696e672074686520426f740a0a332e35204275696c *742d496e20436f6d6d616e64730a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a0a426f *626f742b2b20686173206d616e79206275696c742d696e20636f6d6d616e64732074686174206d *616b652069742075736566756c20776974686f75740a736372697074696e6720737570706f7274 *2e20546865207265666572656e6365206c6561766573206f66662074686520636f6d6d616e6420 *636861723b2072656d656d6265720a746f2075736520776861746576657220796f752064656669 *6e65642074686520636f6d6d616e64206368617220746f20626520696e2060626f742e636f6e66 *272e20496620610a636f6d6d616e64206e6565647320746865206368616e6e656c206e616d6520 *7468656e20796f75206d757374207370656369667920746865206368616e6e656c206173207468 *650a666972737420617267756d656e7420746f2074686520636f6d6d616e64207768656e207072 *6976617465206d6573736167696e672074686520626f74206120636f6d6d616e642e0a0a434f4d *4d414e442020202020202020202020204e45454453204348414e4e454c2020202020204d494e20 *4c4556454c20544f205553452020204445534352495054494f4e0a60616374696f6e272060646f *272020202020205965732020202020202020202020202020202055534552202020202020202020 *202020202020204361757365732074686520626f740a2020202020202020202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *20746f20706572666f726d207468650a2020202020202020202020202020202020202020202020 *20202020202020202020202020202020202020202020202020202020202020202020616374696f *6e2060646f2720696e0a2020202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020202020202020202020207468652063757272656e74 *0a2020202020202020202020202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020206368616e6e656c2e0a6061646475736572272020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *202020202020200a60616464736572766572272020202020202020202020202020202020202020 *20202020202020202020202020202020202020202020202020200a606164647368697427202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *2020202020200a60616c6961732720202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020202020202020200a6062616e272020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *20202020200a6062616e6c69737427202020202020202020202020202020202020202020202020 *2020202020202020202020202020202020202020202020200a606368616e6e656c732720202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *202020200a606379636c6527202020202020202020202020202020202020202020202020202020 *20202020202020202020202020202020202020202020200a606463636c69737427202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *2020200a60646562616e2720202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020202020200a6064656c736572766572272020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *20200a6064656c7573657227202020202020202020202020202020202020202020202020202020 *2020202020202020202020202020202020202020200a6064656c73686974272020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *200a6064656f702720202020202020202020202020202020202020202020202020202020202020 *20202020202020202020202020202020202020200a606469652720202020202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *0a60646f2720202020202020202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020200a60657865637574652720202020202020202020 *20202020202020202020202020202020202020202020202020202020202020202020202020202a *4f6e6c7920617661696c61626c650a202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020696620736372 *697074696e670a2020202020202020202020202020202020202020202020202020202020202020 *20202020202020202020202020202020202020202020202020737570706f72742069730a202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020656e61626c65642a0a6068656c7027202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *2020200a606964656e742720202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020202020200a60696e76697465272020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *20200a606a6f696e27202020202020202020202020202020202020202020202020202020202020 *2020202020202020202020202020202020202020200a606b656570272020202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *200a606b69636b2720202020202020202020202020202020202020202020202020202020202020 *20202020202020202020202020202020202020200a606b69636b62616e27202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *0a606c6f6164272020202020202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020200a606c6f61647363726970742720202020202020 *20202020202020202020202020202020202020202020202020202020202020202020202020202a *4f6e6c7920617661696c61626c650a202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020696620736372 *697074696e670a2020202020202020202020202020202020202020202020202020202020202020 *20202020202020202020202020202020202020202020202020737570706f72742069730a202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020656e61626c65642a0a606c6f636b27202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *2020200a606d6f6465272020202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020202020200a606d7367272020202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *20200a606e616d6573272020202020202020202020202020202020202020202020202020202020 *2020202020202020202020202020202020202020200a606e657874736572766572272020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *200a606e69636b2720202020202020202020202020202020202020202020202020202020202020 *20202020202020202020202020202020202020200a606e736c6f6f6b7570272020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *0a606f702720202020202020202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020202020200a60706172742720202020202020202020202020 *20202020202020202020202020202020202020202020202020202020202020202020202020200a *6070617373776f7264272020202020202020202020202020202020202020202020202020202020 *2020202020202020202020202020202020200a607265636f6e6e65637427202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020202020200a60 *727370796d65737361676527202020202020202020202020202020202020202020202020202020 *20202020202020202020202020202020200a607361766527202020202020202020202020202020 *2020202020202020202020202020202020202020202020202020202020202020202020200a6073 *617927202020202020202020202020202020202020202020202020202020202020202020202020 *202020202020202020202020202020200a60736572766572272020202020202020202020202020 *20202020202020202020202020202020202020202020202020202020202020202020200a607365 *727665726c69737427202020202020202020202020202020202020202020202020202020202020 *2020202020202020202020202020200a60736574666c6f6f647261746527202020202020202020 *202020202020202020202020202020202020202020202020202020202020202020200a60736574 *76657273696f6e2720202020202020202020202020202020202020202020202020202020202020 *20202020202020202020202020200a60736869746c697374272020202020202020202020202020 *2020202020202020202020202020202020202020202020202020202020202020200a607370796c *697374272020202020202020202020202020202020202020202020202020202020202020202020 *202020202020202020202020200a607370796d6573736167652720202020202020202020202020 *20202020202020202020202020202020202020202020202020202020202020200a607374617473 *272020202020202020202020202020202020202020202020202020202020202020202020202020 *2020202020202020202020200a607462616e272020202020202020202020202020202020202020 *202020202020202020202020202020202020202020202020202020202020200a60746b62616e27 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *20202020202020202020200a60746f706963272020202020202020202020202020202020202020 *2020202020202020202020202020202020202020202020202020202020200a60756e6c6f636b27 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *202020202020202020200a60757365726c69737427202020202020202020202020202020202020 *20202020202020202020202020202020202020202020202020202020200a6077686f2720202020 *202020202020202020202020202020202020202020202020202020202020202020202020202020 *2020202020202020200a6077686f69732720202020202020202020202020202020202020202020 *202020202020202020202020202020202020202020202020202020200a0a1f0a46696c653a2062 *6f626f742b2b2e696e666f2c20204e6f64653a20536372697074696e672c20204e6578743a2043 *6f6e6365707420496e6465782c2020507265763a205573696e672074686520426f742c20205570 *3a20546f700a0a3420536372697074696e670a2a2a2a2a2a2a2a2a2a2a2a0a0a426f626f742b2b *2773206d6f737420706f77657266756c2066656174757265206973206974732073637269707469 *6e672073797374656d2e20596f752077726974650a73637269707473207573696e67204775696c *6520536368656d652e2054686973206d616e75616c20646f6573206e6f7420636f76657220686f *7720746f20757365204775696c650a6f7220686f7720746f206c6561726e20536368656d652e20 *2a4e6f7465204775696c65205265666572656e6365204d616e75616c3a20286775696c6529546f *702c20666f720a746865204775696c65207265666572656e6365206d616e75616c20616e640a60 *687474703a2f2f7777772e6363732e6e65752e6564752f686f6d652f646f7261692f742d792d73 *6368656d652f742d792d736368656d652e68746d6c2720666f7220610a676f6f64207475746f72 *69616c206f6e20536368656d652e0a0a2020204e6f7465207468617420696e2070726576696f75 *732076657273696f6e732074686520736372697074696e6720636f6d6d616e6473207768657265 *20696e207468650a666f726d2060626f742d46554e4354494f4e272e205468657920617265206e *6f7720696e2074686520666f726d2060626f743a46554e4354494f4e272e20546865206f6c640a *6e616d657320617265207374696c6c20617661696c61626c652c20627574206172652064657072 *65636174656420616e642077696c6c2062652072656d6f76656420696e0a426f626f742b2b2033 *2e302e204e657720636f6d6d616e647320617265206f6e6c7920617661696c61626c6520776974 *68207468652060626f743a27207072656669782e0a54686520636f6d6d616e6420607065726c20 *2d7069202d65206060732f626f742d2f626f743a2f67272720594f55522d46494c455327207368 *6f756c6420626520656e6f7567680a746f20636f6e7665727420796f757220636f646520746f20 *75736520746865206e65772066756e6374696f6e732e0a0a2a204d656e753a0a0a2a2041646469 *6e67204e657720436f6d6d616e64733a3a0a2a20486f6f6b733a3a0a2a20536368656d65205573 *6572204c6576656c733a3a0a2a2053656e64696e67204d657373616765733a3a0a2a204d697363 *20536372697074696e672053747566663a3a0a0a1f0a46696c653a20626f626f742b2b2e696e66 *6f2c20204e6f64653a20416464696e67204e657720436f6d6d616e64732c20204e6578743a2048 *6f6f6b732c2020507265763a20536372697074696e672c202055703a20536372697074696e670a *0a342e3120416464696e67204e657720436f6d6d616e64730a3d3d3d3d3d3d3d3d3d3d3d3d3d3d *3d3d3d3d3d3d3d3d3d0a0a416464696e672061206e657720636f6d6d616e642069732073696d70 *6c652e20546f2072656769737465722061206e657720636f6d6d616e64207573650a60626f743a *616464636f6d6d616e64272e205468652070726f746f7479706520666f722060626f743a616464 *636f6d6d616e64272069730a6028626f743a616464636f6d6d616e64206e616d652066756e6320 *6e656564732d6368616e6e656c3f206e756d2d6f662d61726773206d696e2d6c6576656c29272e *205468650a606e616d6527206973206120737472696e6720726570726573656e74696e67207468 *65206e616d65206f662074686520636f6d6d616e64206265696e672061646465642e0a6066756e *632720697320612066756e6374696f6e20616363657074696e6720606e756d2d6f662d61726773 *2720617267756d656e74732e0a606e656564732d6368616e6e656c3f27206973206120626f6f6c *20746861742069732074727565206966207468652066756e6374696f6e206e6565647320746865 *0a6368616e6e656c206e616d6520617320697473206669727374206172672c20616e642066616c *7365206f74686572776973652e20606e756d2d6f662d61726773272069730a746865206e756d62 *6572206f662061726773206066756e63272077696c6c2074616b6520616e64206d757374206265 *2077697468696e207a65726f2028302920616e640a7477656e747920283230292e20606d696e2d *6c6576656c27206973206f6e65206f6620746865202a4e6f746520536368656d65205573657220 *4c6576656c733a3a2e20410a75736572206d757374206265206174206c65617374206120606d69 *6e2d6c6576656c27207573657220746f2075736520746865206e657720636f6d6d616e642e204e *6f6e650a6f662074686520617267756d656e7473206172652067756172616e7465656420746f20 *6265207061737365643b2069662074686579206172656e27742074686579206172650a73657420 *746f2074686520656d70747920737472696e6720602222272e20416e206578616d706c65206f66 *2061206e657720636f6d6d616e6420776f756c642062653a0a0a202020202028646566696e6520 *2868656c6c6f206368616e6e656c206e616d65290a202020202020202869662028737472696e67 *3d3f206e616d65202222290a20202020202020202028626f743a736179206368616e6e656c2022 *48656c6c6f20776f726c642122290a20202020202020202028626f743a736179206368616e6e65 *6c2028737472696e672d617070656e64202248656c6c6f2022206e616d65202221222929290a0a *202020202028626f743a616464636f6d6d616e64202268656c6c6f222068656c6c6f2023742032 *2030290a0a202020546869732077696c6c20646973706c6179202248656c6c6f20576f726c6421 *222069662063616c6c656420617320602168656c6c6f2720616e64202248656c6c6f0a576f726c *6420605553455227222069662063616c6c656420617320602168656c6c6f2055534552272e0a0a *1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a20486f6f6b732c20204e65 *78743a20536368656d652055736572204c6576656c732c2020507265763a20416464696e67204e *657720436f6d6d616e64732c202055703a20536372697074696e670a0a342e3220486f6f6b730a *3d3d3d3d3d3d3d3d3d0a0a486f6f6b7320617265206120706f77657266756c2066656174757265 *206f6620426f626f742b2b2e20486f6f6b7320617265206120687962726964206f662069726349 *490a616e642074696e79206675677565202861204d554420626f742920686f6f6b732077697468 *2061206c6974746c6520626974206f662065787472612073747566662061646465640a696e2e20 *5468652062617369632069646561206f66206120686f6f6b206966207468617420796f75206d61 *7463682061207465787420616761696e737420726567756c61720a65787072657373696f6e2061 *6e642063616c6c20612066756e6374696f6e206966207465787420696e2061206d657373616765 *206d61746368657320746861742072656765782e0a54686520646966666572656e742074797065 *73206f6620686f6f6b732070726f766964656420627920426f626f742b2b20636f72726573706f *6e6420746f207468650a646966666572656e7420636c6173736573206f66206d65737361676573 *207468617420426f626f742b2b2063616e20726563696576652e204120486f6f6b20616c736f20 *6861730a7365766572616c2070726f706572746965732c20696e636c7564696e67206974732070 *72696f7269747920616e642077686574686572206f72206e6f7420697420697320610a66616c6c *7468726f75676820686f6f6b2e20486967686572207072696f7269747920686f6f6b7320617265 *206578656375746564206265666f7265206c6f7765720a7072696f7269747920686f6f6b732061 *6e642066616c6c7468726f75676820686f6f6b7320617265206578656375746564206265666f72 *650a6e6f6e2d66616c6c7468726f75676820686f6f6b73206f66207468652073616d6520707269 *6f726974792e20412066616c6c7468726f75676820686f6f6b2063616e0a6d6174636820616e64 *2070726f63657373696e67206f6620686f6f6b732077696c6c20636f6e74696e75653b20617320 *736f6f6e206173207468652066697273740a6e6f6e2d66616c6c7468726f75676820686f6f6b73 *206d6174636865732070726f63657373696e67206f6620686f6f6b732073746f70732e0a0a2a20 *4d656e753a0a0a2a204372656174696e67206120486f6f6b3a3a0a2a20486f6f6b205479706573 *3a3a0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a20437265617469 *6e67206120486f6f6b2c20204e6578743a20486f6f6b2054797065732c2020507265763a20486f *6f6b732c202055703a20486f6f6b730a0a342e322e31204372656174696e67206120486f6f6b0a *2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a546f206164642061206e657720686f6f *6b20796f7520757365207468652066756e6374696f6e2060626f743a616464686f6f6b272e2060 *626f743a616464686f6f6b272069730a70726f746f7479706564206173206028626f743a616464 *686f6f6b20747970652072656765782066756e6374696f6e207072692066616c6c206e616d6529 *272e206074797065270a737065636966696573207468652074797065206f6620686f6f6b202874 *6865207479706573206f6620686f6f6b7320617265206c697374656420696e202a4e6f74652048 *6f6f6b0a54797065733a3a292e20607265676578272069732061207374616e6461726420726567 *756c61722065787072657373696f6e2e20496620607265676578272069730a6d6174636865642c *206066756e6374696f6e272077696c6c2062652063616c6c65642e206066756e6374696f6e2720 *77696c6c2074616b65206120646966666572656e740a6e756d626572206f662061726773206465 *70656e64696e67206f6e2074686520686f6f6b20747970652e2060707269272073706563696669 *657320746865207072696f726974790a6f662074686520686f6f6b2d2d68696768657220707269 *6f7269747920686f6f6b73206172652065786563757465642066697273742e2054686973206172 *67756d656e742069730a6f7074696f6e616c20616e642064656661756c747320746f206030272e *206066616c6c2720697320602374272069662074686520686f6f6b20697320610a66616c6c7468 *726f75676820686f6f6b20616e6420602366272069732074686520686f6f6b206973206e6f7420 *612066616c6c7468726f75676820686f6f6b2e20546869730a61726720697320616c736f206f70 *74696f6e616c20616e642064656661756c7420746f20602374272e20606e616d65272069732074 *6865206f7074696f6e616c206e616d650a6f662074686520686f6f6b2074686174206465666175 *6c747320746f202244454641554c54222e20496620796f752073657420746865206e616d652074 *68656e20796f750a63616e2068617665206d6f7265207468616e206f6e6520686f6f6b20746861 *74206d617463686573207468652073616d65207265676578702c206173206c6f6e672061730a74 *6865792068617665207468652073616d65206e616d652e20452e672e20696e2061206c6f672073 *637269707420796f7520636f756c642068617665207468650a7265676578707320666f72207468 *65206c6f672066756e6374696f6e20616c6c2062652060222e2a222720616e6420736574207468 *656972206e616d657320746f0a60226c6f67222720746f2061766f6964206120636f6e666c6963 *742077697468206f7468657220686f6f6b732e0a0a1f0a46696c653a20626f626f742b2b2e696e *666f2c20204e6f64653a20486f6f6b2054797065732c2020507265763a204372656174696e6720 *6120486f6f6b2c202055703a20486f6f6b730a0a342e322e3220486f6f6b2054797065730a2d2d *2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a486572652069732061206c697374206f66207468652076 *6172696f757320686f6f6b7320617265206e6f746573206f6e2065616368206f6e652e20546865 *2067656e6572616c0a666f726d6174206f66206120686f6f6b2069733a0a0a2020202a2060686f *6f6b732f6e616d65272028746869732069732074686520536368656d65207661726961626c6520 *6e616d65206f662074686520686f6f6b290a20202020202020202d204465736372697074696f6e *206f662074686520686f6f6b0a0a20202020202020202d20415247312041524732202e2e2e2041 *52474e0a202020202020202020202020202d20415247313a20646573630a0a2020202020202020 *20202020202d20415247323a20646573630a0a202020202020202020202020202d202e2e2e0a0a *202020202020202020202020202d204152474e3a20646573630a0a202020546861742073616964 *2c206865726520697320746865206c697374206f6620617661696c61626c6520686f6f6b733a20 *4649584d453a20777269746520646f63730a0a2020202a2060686f6f6b732f616374696f6e270a *20202020202020202d205468697320686f6f6b20697320747269676765726564207768656e2073 *6f6d656f6e6520706572666f726d7320616e20616374696f6e2e0a0a20202020202020202d2046 *524f4d2c20544f2c20414354494f4e0a202020202020202020202020202d2046524f4d3a207468 *6973206973207468652061646472657373206f662074686520706572736f6e2074686174207065 *72666f726d65640a20202020202020202020202020202074686520616374696f6e20696e207468 *6520666f726d20604e49434b20212055534552204020484f5354272028776974686f7574207468 *650a202020202020202020202020202020737061636573292e0a0a202020202020202020202020 *202d20544f3a20546869732069732074686520746172676574206f662074686520616374696f6e *2c2077686963682069732065697468657220610a2020202020202020202020202020206368616e *6e656c206f722074686520426f742773206e69636b2e0a0a202020202020202020202020202d20 *414354494f4e3a2054686973206973207468652074657874206f662074686520616374696f6e2e *20452e672e20696620736f6d656f6e650a20202020202020202020202020202064696420602a20 *666f6f62617220646f65732062617a272c207468656e20414354494f4e20776f756c6420626520 *74686520737472696e670a2020202020202020202020202020206022646f65732062617a22272e *0a0a2020202a2060686f6f6b732f6e69636b6e616d65270a20202020202020202d204465736372 *697074696f6e206f662074686520686f6f6b0a0a20202020202020202d2023206f662061726773 *0a202020202020202020202020202d206061726731273a20646573630a0a2020202a2060686f6f *6b732f7369676e6f6666270a20202020202020202d204465736372697074696f6e206f66207468 *6520686f6f6b0a0a20202020202020202d2023206f6620617267730a2020202020202020202020 *20202d206061726731273a20646573630a0a2020202a2060686f6f6b732f63746370270a202020 *20202020202d204465736372697074696f6e206f662074686520686f6f6b0a0a20202020202020 *202d2023206f6620617267730a202020202020202020202020202d206061726731273a20646573 *630a0a2020202a2060686f6f6b732f637463702d7265706c79270a20202020202020202d204465 *736372697074696f6e206f662074686520686f6f6b0a0a20202020202020202d2023206f662061 *7267730a202020202020202020202020202d206061726731273a20646573630a0a2020202a2060 *686f6f6b732f646973636f6e6e656374270a20202020202020202d204465736372697074696f6e *206f662074686520686f6f6b0a0a20202020202020202d2023206f6620617267730a2020202020 *20202020202020202d206061726731273a20646573630a0a2020202a2060686f6f6b732f666c6f *6f64270a20202020202020202d204465736372697074696f6e206f662074686520686f6f6b0a0a *20202020202020202d2023206f6620617267730a202020202020202020202020202d2060617267 *31273a20646573630a0a2020202a2060686f6f6b732f696e76697465270a20202020202020202d *204465736372697074696f6e206f662074686520686f6f6b0a0a20202020202020202d2023206f *6620617267730a202020202020202020202020202d206061726731273a20646573630a0a202020 *2a2060686f6f6b732f6a6f696e270a20202020202020202d204465736372697074696f6e206f66 *2074686520686f6f6b0a0a20202020202020202d2023206f6620617267730a2020202020202020 *20202020202d206061726731273a20646573630a0a2020202a2060686f6f6b732f6b69636b270a *20202020202020202d204465736372697074696f6e206f662074686520686f6f6b0a0a20202020 *202020202d2023206f6620617267730a202020202020202020202020202d206061726731273a20 *646573630a0a2020202a2060686f6f6b732f70617274270a20202020202020202d204465736372 *697074696f6e206f662074686520686f6f6b0a0a20202020202020202d2023206f662061726773 *0a202020202020202020202020202d206061726731273a20646573630a0a2020202a2060686f6f *6b732f6d6f6465270a20202020202020202d204465736372697074696f6e206f66207468652068 *6f6f6b0a0a20202020202020202d2023206f6620617267730a202020202020202020202020202d *206061726731273a20646573630a0a2020202a2060686f6f6b732f6d657373616765270a202020 *20202020202d204465736372697074696f6e206f662074686520686f6f6b0a0a20202020202020 *202d2023206f6620617267730a202020202020202020202020202d206061726731273a20646573 *630a0a2020202a2060686f6f6b732f6e6f74696365270a20202020202020202d20446573637269 *7074696f6e206f662074686520686f6f6b0a0a20202020202020202d2023206f6620617267730a *202020202020202020202020202d206061726731273a20646573630a0a2020202a2060686f6f6b *732f7075626c6963270a20202020202020202d204465736372697074696f6e206f662074686520 *686f6f6b0a0a20202020202020202d2023206f6620617267730a20202020202020202020202020 *2d206061726731273a20646573630a0a2020202a2060686f6f6b732f7075626c69632d6e6f7469 *6365270a20202020202020202d204465736372697074696f6e206f662074686520686f6f6b0a0a *20202020202020202d2023206f6620617267730a202020202020202020202020202d2060617267 *31273a20646573630a0a2020202a2060686f6f6b732f726177270a20202020202020202d204465 *736372697074696f6e206f662074686520686f6f6b0a0a20202020202020202d2023206f662061 *7267730a202020202020202020202020202d206061726731273a20646573630a0a2020202a2060 *686f6f6b732f74696d6572270a20202020202020202d204465736372697074696f6e206f662074 *686520686f6f6b0a0a20202020202020202d2023206f6620617267730a20202020202020202020 *2020202d206061726731273a20646573630a0a2020202a2060686f6f6b732f746f706963270a20 *202020202020202d204465736372697074696f6e206f662074686520686f6f6b0a0a2020202020 *2020202d2023206f6620617267730a202020202020202020202020202d206061726731273a2064 *6573630a0a2020202a2060686f6f6b732f6463632f626567696e270a20202020202020202d2054 *68697320686f6f6b20697320747269676765726564207768656e2061207573657220626567696e *7320612044434320434841542077697468207468650a20202020202020202020626f742e0a0a20 *202020202020202d2046524f4d0a202020202020202020202020202d2046524f4d3a2054686973 *2069732074686520757365722773206164647265737320696e2074686520666f726d0a20202020 *2020202020202020202020606e69636b217573657240686f7374272e0a0a2020202a2060686f6f *6b732f6463632f6d657373616765270a20202020202020202d205468697320686f6f6b20697320 *747269676765726564207768656e206120757365722073656e64732061206d6573736167652074 *6f2074686520626f740a202020202020202020207468726f75676820612044434320434841540a *0a20202020202020202d2046524f4d204d4553534147450a202020202020202020202020202d20 *46524f4d3a20546869732069732074686520757365722773206164647265737320696e20746865 *20666f726d0a202020202020202020202020202020606e69636b217573657240686f7374272e0a *0a202020202020202020202020202d204d4553534147453a205468697320697320746865206d65 *73736167652074686520757365722073656e7420746f2074686520626f742e0a0a1f0a46696c65 *3a20626f626f742b2b2e696e666f2c20204e6f64653a20536368656d652055736572204c657665 *6c732c20204e6578743a2053656e64696e67204d657373616765732c2020507265763a20486f6f *6b732c202055703a20536372697074696e670a0a342e3320536368656d652055736572204c6576 *656c730a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a0a5468657265206172652066 *697665206c6576656c73207468617420612075736572206d6179206265207768656e20696e7465 *72666163696e672077697468206120626f743a0a4e4f4e452c20555345522c2054525553544544 *5f555345522c20465249454e442c204d41535445522e2054686520536368656d65207661726961 *626c657320666f72207468650a75736572206c6576656c73206172652060626f743a757365722d *6e6f6e65272c2060626f743a757365722d75736572272c2060626f743a757365722d7472757374 *6564272c0a60626f743a757365722d667269656e64272c20616e642060626f743a757365722d6d *6173746572272e20536565202a4e6f74652055736572204c6576656c733a3a20666f720a6d6f72 *6520696e666f726d6174696f6e206f6e2055736572204c6576656c732e0a0a2020205768656e20 *616464696e672061206e657720636f6d6d616e642c207468696e6b2061626f75742077686f2073 *686f756c642062652061626c6520746f207573652069742e0a497320796f757220636f6d6d616e *6420612067656e6572616c20707572706f736520636f6d6d616e6420746861742068656c707320 *746865206368616e6e656c2028652e672e0a60217365656e272920746861742065766572796f6e *652073686f756c642062652061626c6520746f207573653f204f7220697320697420736f6d6574 *68696e6720746861740a73686f756c6420626520726573747269637465643f20536565202a4e6f *74652055736572204c6576656c733a3a20666f7220696e666f726d6174696f6e206f6e20776861 *740a6c6576656c2075736572732063616e20646f2077686174207769746820746865206275696c *7420696e20626f7420636f6d6d616e647320616e64207468696e6b2061626f75740a7768617420 *6c6576656c2061207573657220796f757220636f6d6d616e642069732074617267657474656420 *746f77617264732e20596f75206d757374206265205f766572795f0a6361726566756c20776865 *6e20676976696e67206e657720636f6d6d616e647320746f206c6f776572206c6576656c207573 *657273206265636175736520796f752063616e0a646f206261736963616c6c7920657665727974 *68696e672074686520626f742063616e20646f20776974682061207363726970742e2041732074 *686520736372697074696e670a696e74657266616365206265636f6d6573206d6f726520706f77 *657266756c2c20796f75206d757374207468696e6b206d6f72652061626f757420776861742075 *736572730a63616e20757365206e657720636f6d6d616e647320796f75206164642e0a0a1f0a46 *696c653a20626f626f742b2b2e696e666f2c20204e6f64653a2053656e64696e67204d65737361 *6765732c20204e6578743a204d69736320536372697074696e672053747566662c202050726576 *3a20536368656d652055736572204c6576656c732c202055703a20536372697074696e670a0a34 *2e342053656e64696e67204d657373616765730a3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d *3d0a0a546865726520617265207365766572616c207479706573206f66206d6573736167657320 *796f752063616e2073656e64207769746820426f626f742b2b2066726f6d0a736372697074732e *205468657265206973207468652073696d706c652c2062757420726174686572206c696d697465 *642c2060626f743a736179272c0a60626f743a616374696f6e2720616e642060626f743a6d7367 *272c20616e6420746865206d6f726520706f77657266756c2c20627574206c6f776572206c6576 *656c2c0a60626f743a73656e642d4d455353414745272066756e6374696f6e732e204d6f737420 *626f74732077696c6c2070726f6261626c79206f6e6c79206e656564207468650a686967686572 *206c6576656c2066756e6374696f6e732c2062757420666f72207468652073616b65206f662077 *68792d6e6f7420426f626f742b2b206c65747320796f750a75736520746865206c6f776572206c *6576656c2066756e6374696f6e732028696e2070726f6772657373292e0a0a2a204d656e753a0a *0a2a2048696768204c6576656c204d6573736167652046756e6374696f6e733a3a0a2a204c6f77 *204c6576656c204d6573736167652046756e6374696f6e733a3a0a0a1f0a46696c653a20626f62 *6f742b2b2e696e666f2c20204e6f64653a2048696768204c6576656c204d657373616765204675 *6e6374696f6e732c20204e6578743a204c6f77204c6576656c204d6573736167652046756e6374 *696f6e732c2020507265763a2053656e64696e67204d657373616765732c202055703a2053656e *64696e67204d657373616765730a0a342e342e31202248696768204c6576656c22204d65737361 *67652046756e6374696f6e730a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d *2d2d2d2d2d2d2d2d2d2d0a0a2e2e2e0a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20 *204e6f64653a204c6f77204c6576656c204d6573736167652046756e6374696f6e732c20205072 *65763a2048696768204c6576656c204d6573736167652046756e6374696f6e732c202055703a20 *53656e64696e67204d657373616765730a0a342e342e3220224c6f77204c6576656c22204d6573 *736167652046756e6374696f6e730a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d *2d2d2d2d2d2d2d2d2d2d2d0a0a54686520224c6f77204c6576656c22206d6573736167696e6720 *66756e6374696f6e7320616c6c6f7720796f7520746f20646f207468696e6773206c696b652073 *656e640a43544350206d657373616765732e20596f752070726f6261626c792077616e7420746f *207265616420726663203238313220616e6420746865204354435020737065630a6265666f7265 *207573696e672074686573652e20496620796f752068617665206e6f2069646561207768617420 *746865736520646f2c20726561642072666320323831320a2849524320436c69656e742050726f *746f636f6c2920616e64204354435020737065632e2054686573652066756e6374696f6e732061 *6c6c2072657475726e0a602a756e7370656369666965642a2720616c776179732c20736f20646f *6e277420757365207468652072657475726e2076616c756520666f7220616e797468696e672e0a *0a2020202a2060626f743a73656e642d4354435020746f20636f6d6d616e64206d657373616765 *272060746f272069732074686520746172676574206f6620796f757220435443500a2020202020 *6d6573736167652c2060636f6d6d616e642720697320746865204354435020636f6d6d616e642c *20616e6420606d65737361676527206973207468650a20202020206d65737361676520286f7220 *617267756d656e747329206f662074686520636f6d6d616e642e204d616b65207375726520746f *0a202020202060626f743a637463702d71756f74652720746865206d657373616765210a0a0a1f *0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a204d69736320536372697074 *696e672053747566662c2020507265763a2053656e64696e67204d657373616765732c20205570 *3a20536372697074696e670a0a342e35204d6973632e20536372697074696e672053747566660a *3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d0a0a546865736520617265206120 *6665772075736566756c207468696e6773207468617420492074686f756768742070656f706c65 *2077726974696e6720736372697074730a6d696768742077616e7420746f206b6e6f772e0a0a20 *2020496620796f752077616e7420746f206578656375746520636f6465207768656e2074686520 *626f742065786974732c206a75737420646f20606164642d686f6f6b210a626f743a657869742d *686f6f6b205448554e4b27207768657265205448554e4b20697320616e20617267756d656e746c *6573732070726f6365647572652028610a7468756e6b292e205768656e2074686520626f742065 *7869747320796f7572207468756e6b2077696c6c2062652063616c6c65642e0a0a1f0a46696c65 *3a20626f626f742b2b2e696e666f2c20204e6f64653a20436f6e6365707420496e6465782c2020 *4e6578743a2046756e6374696f6e20496e6465782c2020507265763a20536372697074696e672c *202055703a20546f700a0a436f6e6365707420496e6465780a2a2a2a2a2a2a2a2a2a2a2a2a2a0a *0a00085b696e64657800085d0a2a204d656e753a0a0a2a204261636b67726f756e64206f6e2048 *6f6f6b733a20202020202020202020202020202020202020486f6f6b732e202020202020202020 *2020202020202020286c696e652036290a0a1f0a46696c653a20626f626f742b2b2e696e666f2c *20204e6f64653a2046756e6374696f6e20496e6465782c20204e6578743a205661726961626c65 *20496e6465782c2020507265763a20436f6e6365707420496e6465782c202055703a20546f700a *0a46756e6374696f6e20496e6465780a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a0a00085b696e6465 *7800085d0a2a204d656e753a0a0a2a20616464636f6d6d616e643a202020202020202020202020 *20202020202020202020202020202020416464696e67204e657720436f6d6d616e64732e202020 *286c696e652036290a2a20616464686f6f6b3a2020202020202020202020202020202020202020 *20202020202020202020204372656174696e67206120486f6f6b2e20202020202020286c696e65 *2036290a0a1f0a46696c653a20626f626f742b2b2e696e666f2c20204e6f64653a205661726961 *626c6520496e6465782c2020507265763a2046756e6374696f6e20496e6465782c202055703a20 *546f700a0a5661726961626c6520496e6465780a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a0a00085b *696e64657800085d0a2a204d656e753a0a0a2a20657869742d686f6f6b3a202020202020202020 *20202020202020202020202020202020202020204d69736320536372697074696e672053747566 *662e0a202020202020202020202020202020202020202020202020202020202020202020202020 *2020202020202020202020202020202020202020202020202020286c696e6520202039290a2a20 *686f6f6b732f616374696f6e3a2020202020202020202020202020202020202020202020202020 *486f6f6b2054797065732e20202020202020202020286c696e6520203233290a2a20686f6f6b73 *2f637463703a20202020202020202020202020202020202020202020202020202020486f6f6b20 *54797065732e20202020202020202020286c696e6520203530290a2a20686f6f6b732f63746370 *2d7265706c793a20202020202020202020202020202020202020202020486f6f6b205479706573 *2e20202020202020202020286c696e6520203536290a2a20686f6f6b732f6463632f626567696e *3a2020202020202020202020202020202020202020202020486f6f6b2054797065732e20202020 *202020202020286c696e6520313436290a2a20686f6f6b732f6463632f6d6573736167653a2020 *20202020202020202020202020202020202020486f6f6b2054797065732e202020202020202020 *20286c696e6520313534290a2a20686f6f6b732f646973636f6e6e6563743a2020202020202020 *2020202020202020202020202020486f6f6b2054797065732e20202020202020202020286c696e *6520203632290a2a20686f6f6b732f666c6f6f643a202020202020202020202020202020202020 *202020202020202020486f6f6b2054797065732e20202020202020202020286c696e6520203638 *290a2a20686f6f6b732f696e766974653a20202020202020202020202020202020202020202020 *20202020486f6f6b2054797065732e20202020202020202020286c696e6520203734290a2a2068 *6f6f6b732f6a6f696e3a2020202020202020202020202020202020202020202020202020202048 *6f6f6b2054797065732e20202020202020202020286c696e6520203830290a2a20686f6f6b732f *6b69636b3a20202020202020202020202020202020202020202020202020202020486f6f6b2054 *797065732e20202020202020202020286c696e6520203836290a2a20686f6f6b732f6d65737361 *67653a20202020202020202020202020202020202020202020202020486f6f6b2054797065732e *20202020202020202020286c696e6520313034290a2a20686f6f6b732f6d6f64653a2020202020 *2020202020202020202020202020202020202020202020486f6f6b2054797065732e2020202020 *2020202020286c696e6520203938290a2a20686f6f6b732f6e69636b6e616d653a202020202020 *202020202020202020202020202020202020486f6f6b2054797065732e20202020202020202020 *286c696e6520203338290a2a20686f6f6b732f6e6f746963653a20202020202020202020202020 *20202020202020202020202020486f6f6b2054797065732e20202020202020202020286c696e65 *20313130290a2a20686f6f6b732f706172743a2020202020202020202020202020202020202020 *2020202020202020486f6f6b2054797065732e20202020202020202020286c696e652020393229 *0a2a20686f6f6b732f7075626c69633a2020202020202020202020202020202020202020202020 *202020486f6f6b2054797065732e20202020202020202020286c696e6520313136290a2a20686f *6f6b732f7075626c69632d6e6f746963653a20202020202020202020202020202020202020486f *6f6b2054797065732e20202020202020202020286c696e6520313232290a2a20686f6f6b732f72 *61773a2020202020202020202020202020202020202020202020202020202020486f6f6b205479 *7065732e20202020202020202020286c696e6520313238290a2a20686f6f6b732f7369676e6f66 *663a20202020202020202020202020202020202020202020202020486f6f6b2054797065732e20 *202020202020202020286c696e6520203434290a2a20686f6f6b732f74696d65723a2020202020 *20202020202020202020202020202020202020202020486f6f6b2054797065732e202020202020 *20202020286c696e6520313334290a2a20686f6f6b732f746f7069633a20202020202020202020 *2020202020202020202020202020202020486f6f6b2054797065732e2020202020202020202028 *6c696e6520313430290a2a20757365722d667269656e643a202020202020202020202020202020 *202020202020202020202020536368656d652055736572204c6576656c732e2020286c696e6520 *202036290a2a20757365722d6d61737465723a2020202020202020202020202020202020202020 *20202020202020536368656d652055736572204c6576656c732e2020286c696e6520202036290a *2a20757365722d6e6f6e653a202020202020202020202020202020202020202020202020202020 *2020536368656d652055736572204c6576656c732e2020286c696e6520202036290a2a20757365 *722d747275737465643a2020202020202020202020202020202020202020202020202020536368 *656d652055736572204c6576656c732e2020286c696e6520202036290a2a20757365722d757365 *723a2020202020202020202020202020202020202020202020202020202020536368656d652055 *736572204c6576656c732e2020286c696e6520202036290a0a0a1f0a546167205461626c653a0a *4e6f64653a20546f707f3532320a4e6f64653a20496e74726f64756374696f6e7f313831310a4e *6f64653a20436f6e66696775726174696f6e7f323030330a4e6f64653a20436f6e666967757261 *74696f6e2046696c65737f323239300a4e6f64653a20626f742e636f6e667f323530350a4e6f64 *653a207365727665722073796e7461787f333934330a4e6f64653a206368616e6e656c2073796e *7461787f343830370a4e6f64653a20626f742e75736572737f353635300a4e6f64653a20436f6e *66696775726174696f6e2046696c6520506c6163656d656e747f363535330a4e6f64653a205573 *696e672074686520426f747f373033310a4e6f64653a205374617274696e672074686520426f74 *7f373238310a4e6f64653a2055736572204c6576656c737f383632350a4e6f64653a2050726f74 *656374696f6e7f31303038310a4e6f64653a204175746f6d61746963204f707f31303639300a4e *6f64653a204275696c742d496e20436f6d6d616e64737f31303937390a4e6f64653a2053637269 *7074696e677f31353531330a4e6f64653a20416464696e67204e657720436f6d6d616e64737f31 *363437380a4e6f64653a20486f6f6b737f31373734350a4e6f64653a204372656174696e672061 *20486f6f6b7f31383732340a4e6f64653a20486f6f6b2054797065737f31393837320a4e6f6465 *3a20536368656d652055736572204c6576656c737f32333335350a4e6f64653a2053656e64696e *67204d657373616765737f32343438390a4e6f64653a2048696768204c6576656c204d65737361 *67652046756e6374696f6e737f32353130350a4e6f64653a204c6f77204c6576656c204d657373 *6167652046756e6374696f6e737f32353332380a4e6f64653a204d69736320536372697074696e *672053747566667f32363039300a4e6f64653a20436f6e6365707420496e6465787f3236353134 *0a4e6f64653a2046756e6374696f6e20496e6465787f32363733330a4e6f64653a205661726961 *626c6520496e6465787f32373033320a1f0a456e6420546167205461626c650a hunk ./bobot++.texinfo 86 +* Starting the Bot:: hunk ./bobot++.texinfo 90 +* Built-In Commands:: hunk ./bobot++.texinfo 266 +* Starting the Bot:: hunk ./bobot++.texinfo 270 +* Built-In Commands:: hunk ./bobot++.texinfo 273 -@node User Levels, Protection, Using the Bot, Using the Bot +@node Starting the Bot, User Levels, Using the Bot, Using the Bot +@section Starting the Bot + +The bot is usually installed with the binary name @file{bobotpp}. It +accepts the following command line arguments: + +@itemize + +@item @code{[--help][-h]} - Shows detailed help and exits + +@item @code{[--version][-v]} - Shows version information and exits + +@item @code{[--no-background][-b]} - Run bobot++ in the foreground + +@item @code{[--config-file file][-f]} - Use file instead of +@file{bot.conf} + +@item @code{[--config-dir dir][-d]} - Use dir as dir to load config +file from + +@item @code{[--config dir][-c]} - Search your config path (defaults to +@file{@var{$HOME}/.bobotpp/config/} and then @file{/etc/bobotpp/}) for +dir and then loads your config data using dir + +@item @code{[--sys-config dir][-s]} - Looks for config in +@file{/etc/bobotpp/dir}. Note that the user dir is still searched +first + +@item @code{[--user-config dir][-u]} - Looks for config in +@file{@var{$HOME}/.bobotpp/config/dir/}. Note that the system dir is +still searched after this if dir is not found. + +@item @code{[--debug][-D]} Makes Bobot++ print debugging info and run +in the foreground + +@end itemize + +The default configuration is read from +@file{@var{$HOME}/.bobotpp/config/default/} and then +@file{/etc/bobotpp/default/} if the user config is not found. + +The bot defaults to running in the background as a daemon. + +@node User Levels, Protection, Starting the Bot, Using the Bot hunk ./bobot++.texinfo 373 -@node Automatic Op, , Protection, Using the Bot +@node Automatic Op, Built-In Commands, Protection, Using the Bot hunk ./bobot++.texinfo 380 +@node Built-In Commands, , Automatic Op, Using the Bot +@section Built-In Commands + +Bobot++ has many built-in commands that make it useful without +scripting support. The reference leaves off the command char; +remember to use whatever you defined the command char to be in +@file{bot.conf}. If a command needs the channel name then you must +specify the channel as the first argument to the command when private +messaging the bot a command. + +@multitable @columnfractions 0.25 0.25 0.25 0.25 +@item @sc{command} @tab @sc{Needs Channel} @tab @sc{Min Level to Use} @tab @sc{Description} + +@item @command{action} @option{do} @tab Yes @tab @var{USER} @tab +Causes the bot to perform the action @option{do} in the current +channel. + +@item @command{adduser} + +@item @command{addserver} + +@item @command{addshit} + +@item @command{alias} + +@item @command{ban} + +@item @command{banlist} + +@item @command{channels} + +@item @command{cycle} + +@item @command{dcclist} + +@item @command{deban} + +@item @command{delserver} + +@item @command{deluser} + +@item @command{delshit} + +@item @command{deop} + +@item @command{die} + +@item @command{do} + +@item @command{execute} @tab @tab @tab @strong{Only available if scripting +support is enabled} + +@item @command{help} + +@item @command{ident} + +@item @command{invite} + +@item @command{join} + +@item @command{keep} + +@item @command{kick} + +@item @command{kickban} + +@item @command{load} + +@item @command{loadscript} @tab @tab @tab @strong{Only available if scripting +support is enabled} + +@item @command{lock} + +@item @command{mode} + +@item @command{msg} + +@item @command{names} + +@item @command{nextserver} + +@item @command{nick} + +@item @command{nslookup} + +@item @command{op} + +@item @command{part} + +@item @command{password} + +@item @command{reconnect} + +@item @command{rspymessage} + +@item @command{save} + +@item @command{say} + +@item @command{server} + +@item @command{serverlist} + +@item @command{setfloodrate} + +@item @command{setversion} + +@item @command{shitlist} + +@item @command{spylist} + +@item @command{spymessage} + +@item @command{stats} + +@item @command{tban} + +@item @command{tkban} + +@item @command{topic} + +@item @command{unlock} + +@item @command{userlist} + +@item @command{who} + +@item @command{whois} + +@end multitable + hunk ./source/BotConfig.C 1 +// BotConfig.C -*- C++ -*- +// Copyright (C) 2004 Clinton Ebadi + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + +#include "BotConfig.H" +#include "Bot.H" +#include "StringTokenizer.H" +#include +#include +#include +#include + +BotConfig::BotConfig (std::string cf) + : config_filename (cf) +{ } + +bool BotConfig::read_config () +{ + std::ifstream config_file (config_filename.c_str ()); + std::string current_line; + unsigned int line_number = 1; + + options_db.clear (); + + if (!config_file) + { + // FIXME: log lines (needs local bot object, probably a + // redesign. UGH). + + // Bot::logLine ("Error: Config File Not Found `" + + // config_filename + "'"); + return false; + } + + while (!config_file.eof ()) + { + std::getline (config_file, current_line); + if (current_line.length () == 0 || current_line[0] == '#') + { + line_number++; + continue; + } + + StringTokenizer st (current_line); + std::string command = st.nextToken('=').trim().toUpper(); + StringTokenizer params (st.nextToken('=').trim()); + + options_db[command] = t_option_values (t_value_list (), + t_watcher_list ()); + while (params.hasMoreTokens (',')) + { + options_db[command].first.push_back (params.nextToken (',').trim()); + } + } + return true; +} + + +BotConfig::t_option_values BotConfig::get_option_values (std::string key) +{ + t_options_db::const_iterator cf_iter = + options_db.find (key); + + if (cf_iter != options_db.end ()) + return cf_iter->second; + else + return t_option_values (); // Empty vector +} + +std::string BotConfig::set_config_file (std::string fname) +{ + std::string old_config_filename = config_filename; + config_filename = fname; + options_db.clear (); + read_config (); + return old_config_filename; +} + +namespace +{ + struct push_back_ + { + BotConfig::t_value_list* lst; + + push_back_ (BotConfig::t_value_list* l) + : lst (l) + {} + + void operator()(BotConfig::t_value val) + { + lst->push_back (val); + } + }; +} + +void BotConfig::set_option_value (std::string key, t_value_list values, + bool append) +{ + t_options_db::iterator cf_iter = options_db.find (key); + if (cf_iter != options_db.end ()) + { + if (append) + { + // FIXME: Potentially slow (make this push_front in 3.0) + std::for_each (values.begin (), values.end (), + push_back_ (&cf_iter->second.first)); + } + else + cf_iter->second.first = values; + } +} + + hunk ./source/BotConfig.H 1 +// BotConfig.H -*- C++ -*- +// Copyright (C) 2004 Clinton Ebadi + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + +/* + Config Database: + map,list> + void watcher (key, options, appended?) + +*/ + +#include +#include +#include + +class BotConfig +{ +public: + typedef std::string t_value; + typedef std::list t_value_list; + + typedef void (*t_watcher) (std::string, t_value_list, bool); + + typedef std::list t_watcher_list; + typedef std::pair t_option_values; + + typedef std::map t_options_db; + + +private: + t_options_db options_db; + std::string config_filename; + +public: + BotConfig (std::string); + + bool read_config (); // true if read successfully + bool write_config (); // true if written succesfully + + // Getters + t_option_values get_option_values (std::string key); + + + + // Setters + void set_option_value (std::string key, t_value_list values, + bool append); + + + std::string set_config_file (std::string new_filename); // returns + // old + // filename + + bool add_watcher (std::string key, t_watcher new_watcher); // t if key + // exists, + // f + // otherwise + bool clear_watchers (std::string key); // t if key exists, f + // otherwise + + // Static Procedures (these are for convinience) + t_value_list get_option_value_list (t_option_values v) + { return v.first; } + + t_watcher_list get_option_watcher_list (t_option_values v) + { return v.second; } +}; hunk ./source/Makefile.am 5 + BotConfig.C \ hunk ./source/Makefile.am 41 + BotConfig.H \ }