0x60806040523480156200001157600080fd5b5060405162001bd638038062001bd68339818101604052810190620000379190620002a7565b82600160008190555062000060620000546200016f60201b60201c565b6200017760201b60201c565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505083600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000319565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200026f8262000242565b9050919050565b620002818162000262565b81146200028d57600080fd5b50565b600081519050620002a18162000276565b92915050565b60008060008060808587031215620002c457620002c36200023d565b5b6000620002d48782880162000290565b9450506020620002e78782880162000290565b9350506040620002fa8782880162000290565b92505060606200030d8782880162000290565b91505092959194509250565b6118ad80620003296000396000f3fe6080604052600436106100ec5760003560e01c80637b1039991161008a578063cd48121211610059578063cd48121214610294578063df2ebdbb146102bd578063e97edf09146102e8578063f2fde38b14610311576100f3565b80637b103999146101ea57806388d2755b146102155780638da5cb5b14610240578063c57a88251461026b576100f3565b806348472de6116100c657806348472de61461016a5780636ccae05414610193578063715018a6146101bc578063756ffacd146101d3576100f3565b8063022490c8146100f85780631306342d146101145780633d14093f1461013f576100f3565b366100f357005b600080fd5b610112600480360381019061010d9190611174565b61033a565b005b34801561012057600080fd5b5061012961066b565b604051610136919061123e565b60405180910390f35b34801561014b57600080fd5b50610154610691565b6040516101619190611268565b60405180910390f35b34801561017657600080fd5b50610191600480360381019061018c9190611283565b6106b7565b005b34801561019f57600080fd5b506101ba60048036038101906101b591906112b0565b610703565b005b3480156101c857600080fd5b506101d161073b565b005b3480156101df57600080fd5b506101e861074f565b005b3480156101f657600080fd5b506101ff610806565b60405161020c9190611268565b60405180910390f35b34801561022157600080fd5b5061022a61082c565b6040516102379190611268565b60405180910390f35b34801561024c57600080fd5b50610255610852565b6040516102629190611268565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190611283565b61087c565b005b3480156102a057600080fd5b506102bb60048036038101906102b69190611283565b61090b565b005b3480156102c957600080fd5b506102d2610957565b6040516102df9190611268565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a9190611283565b61096f565b005b34801561031d57600080fd5b5061033860048036038101906103339190611283565b6109bb565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600e81526020017f494e56414c49445f53454e44455200000000000000000000000000000000000081525090610402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f99190611382565b60405180910390fd5b5061040b610a3e565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105bf5761047f8530888673ffffffffffffffffffffffffffffffffffffffff16610a8d909392919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b81526004016104dc9291906113b3565b6020604051808303816000875af11580156104fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051f9190611414565b506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516105699190611488565b6000604051808303816000865af19150503d80600081146105a6576040519150601f19603f3d011682016040523d82523d6000602084013e6105ab565b606091505b50509050806105b957600080fd5b5061065b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1687836040516106099190611488565b60006040518083038185875af1925050503d8060008114610646576040519150601f19603f3d011682016040523d82523d6000602084013e61064b565b606091505b505090508061065957600080fd5b505b610663610b16565b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106bf610b20565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61070b610b20565b61073682828573ffffffffffffffffffffffffffffffffffffffff16610b9e9092919063ffffffff16565b505050565b610743610b20565b61074d6000610c24565b565b610757610b20565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161077d906114c5565b60006040518083038185875af1925050503d80600081146107ba576040519150601f19603f3d011682016040523d82523d6000602084013e6107bf565b606091505b5050905080610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa90611526565b60405180910390fd5b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610884610b20565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fab1d989cb101ab9394f5e690844e769db62bd90dea8786bcd2cb53b1fe7d0e1060405160405180910390a250565b610913610b20565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b610977610b20565b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109c3610b20565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a29906115b8565b60405180910390fd5b610a3b81610c24565b50565b600260005403610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a90611624565b60405180910390fd5b6002600081905550565b610b10846323b872dd60e01b858585604051602401610aae93929190611644565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cea565b50505050565b6001600081905550565b610b28610db1565b73ffffffffffffffffffffffffffffffffffffffff16610b46610852565b73ffffffffffffffffffffffffffffffffffffffff1614610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b93906116c7565b60405180910390fd5b565b610c1f8363a9059cbb60e01b8484604051602401610bbd9291906113b3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cea565b505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000610d4c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610db99092919063ffffffff16565b9050600081511115610dac5780806020019051810190610d6c9190611414565b610dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da290611759565b60405180910390fd5b5b505050565b600033905090565b6060610dc88484600085610dd1565b90509392505050565b606082471015610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d906117eb565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610e3f9190611488565b60006040518083038185875af1925050503d8060008114610e7c576040519150601f19603f3d011682016040523d82523d6000602084013e610e81565b606091505b5091509150610e9287838387610e9e565b92505050949350505050565b60608315610f00576000835103610ef857610eb885610f13565b610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90611857565b60405180910390fd5b5b829050610f0b565b610f0a8383610f36565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610f495781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9190611382565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610fad81610f9a565b8114610fb857600080fd5b50565b600081359050610fca81610fa4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ffb82610fd0565b9050919050565b61100b81610ff0565b811461101657600080fd5b50565b60008135905061102881611002565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61108182611038565b810181811067ffffffffffffffff821117156110a05761109f611049565b5b80604052505050565b60006110b3610f86565b90506110bf8282611078565b919050565b600067ffffffffffffffff8211156110df576110de611049565b5b6110e882611038565b9050602081019050919050565b82818337600083830152505050565b6000611117611112846110c4565b6110a9565b90508281526020810184848401111561113357611132611033565b5b61113e8482856110f5565b509392505050565b600082601f83011261115b5761115a61102e565b5b813561116b848260208601611104565b91505092915050565b60008060008060008060c0878903121561119157611190610f90565b5b600061119f89828a01610fbb565b96505060206111b089828a01611019565b95505060406111c189828a01611019565b94505060606111d289828a01611019565b93505060806111e389828a01610fbb565b92505060a087013567ffffffffffffffff81111561120457611203610f95565b5b61121089828a01611146565b9150509295509295509295565b600061122882610fd0565b9050919050565b6112388161121d565b82525050565b6000602082019050611253600083018461122f565b92915050565b61126281610ff0565b82525050565b600060208201905061127d6000830184611259565b92915050565b60006020828403121561129957611298610f90565b5b60006112a784828501611019565b91505092915050565b6000806000606084860312156112c9576112c8610f90565b5b60006112d786828701611019565b93505060206112e886828701611019565b92505060406112f986828701610fbb565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b8381101561133d578082015181840152602081019050611322565b60008484015250505050565b600061135482611303565b61135e818561130e565b935061136e81856020860161131f565b61137781611038565b840191505092915050565b6000602082019050818103600083015261139c8184611349565b905092915050565b6113ad81610f9a565b82525050565b60006040820190506113c86000830185611259565b6113d560208301846113a4565b9392505050565b60008115159050919050565b6113f1816113dc565b81146113fc57600080fd5b50565b60008151905061140e816113e8565b92915050565b60006020828403121561142a57611429610f90565b5b6000611438848285016113ff565b91505092915050565b600081519050919050565b600081905092915050565b600061146282611441565b61146c818561144c565b935061147c81856020860161131f565b80840191505092915050565b60006114948284611457565b915081905092915050565b50565b60006114af60008361144c565b91506114ba8261149f565b600082019050919050565b60006114d0826114a2565b9150819050919050565b7f4661696c656420746f207472616e736665722045544800000000000000000000600082015250565b600061151060168361130e565b915061151b826114da565b602082019050919050565b6000602082019050818103600083015261153f81611503565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006115a260268361130e565b91506115ad82611546565b604082019050919050565b600060208201905081810360008301526115d181611595565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061160e601f8361130e565b9150611619826115d8565b602082019050919050565b6000602082019050818103600083015261163d81611601565b9050919050565b60006060820190506116596000830186611259565b6116666020830185611259565b61167360408301846113a4565b949350505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006116b160208361130e565b91506116bc8261167b565b602082019050919050565b600060208201905081810360008301526116e0816116a4565b9050919050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000611743602a8361130e565b915061174e826116e7565b604082019050919050565b6000602082019050818103600083015261177281611736565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006117d560268361130e565b91506117e082611779565b604082019050919050565b60006020820190508181036000830152611804816117c8565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611841601d8361130e565b915061184c8261180b565b602082019050919050565b6000602082019050818103600083015261187081611834565b905091905056fea264697066735822122028c5834d312b8bda52ba530195a5c9b3f9e2e763b63ac530e9c963083f4b12a464736f6c634300081600330000000000000000000000001dcfbc3fa01b2a86bc3a3f43479cce9e8d438adc00000000000000000000000043c47b76d24ad1f73f5ab12442a016397a5ae9f60000000000000000000000006352a56caadc4f1e25cd6c75970fa768a3304e640000000000000000000000000a0b7d1eea99e6189995432fec8172bb2dfff847