60806040523480156200001157600080fd5b5060405162001da538038062001da5833981810160405281019062000037919062000336565b6040518060400160405280600881526020017f4d6f6f6e2041707000000000000000000000000000000000000000000000000081525060019080519060200190620000849291906200021c565b506040518060400160405280600381526020017f415050000000000000000000000000000000000000000000000000000000000081525060029080519060200190620000d29291906200021c565b506012600360146101000a81548160ff021916908360ff160217905550600360149054906101000a900460ff16600a6200010d919062000502565b63b2d05e006200011e919062000553565b600081905550600054600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600054604051620001cc9190620005c5565b60405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000647565b8280546200022a9062000611565b90600052602060002090601f0160209004810192826200024e57600085556200029a565b82601f106200026957805160ff19168380011785556200029a565b828001600101855582156200029a579182015b82811115620002995782518255916020019190600101906200027c565b5b509050620002a99190620002ad565b5090565b5b80821115620002c8576000816000905550600101620002ae565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002fe82620002d1565b9050919050565b6200031081620002f1565b81146200031c57600080fd5b50565b600081519050620003308162000305565b92915050565b6000602082840312156200034f576200034e620002cc565b5b60006200035f848285016200031f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620003f657808604811115620003ce57620003cd62000368565b5b6001851615620003de5780820291505b8081029050620003ee8562000397565b9450620003ae565b94509492505050565b600082620004115760019050620004e4565b81620004215760009050620004e4565b81600181146200043a576002811462000445576200047b565b6001915050620004e4565b60ff8411156200045a576200045962000368565b5b8360020a91508482111562000474576200047362000368565b5b50620004e4565b5060208310610133831016604e8410600b8410161715620004b55782820a905083811115620004af57620004ae62000368565b5b620004e4565b620004c48484846001620003a4565b92509050818404811115620004de57620004dd62000368565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200050f82620004eb565b91506200051c83620004f5565b92506200054b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620003ff565b905092915050565b60006200056082620004eb565b91506200056d83620004eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620005a957620005a862000368565b5b828202905092915050565b620005bf81620004eb565b82525050565b6000602082019050620005dc6000830184620005b4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200062a57607f821691505b60208210811415620006415762000640620005e2565b5b50919050565b61174e80620006576000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063671f3db811610071578063671f3db81461018f57806370a08231146101ab57806395d89b41146101db578063a9059cbb146101f9578063b8c9d25c14610229578063dd62ed3e14610247576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce5671461015557806356ec63a514610173575b600080fd5b6100c1610277565b6040516100ce9190610dcc565b60405180910390f35b6100f160048036038101906100ec9190610e87565b610309565b6040516100fe9190610ee2565b60405180910390f35b61010f610320565b60405161011c9190610f0c565b60405180910390f35b61013f600480360381019061013a9190610f27565b610329565b60405161014c9190610ee2565b60405180910390f35b61015d610351565b60405161016a9190610f96565b60405180910390f35b61018d60048036038101906101889190610fb1565b610368565b005b6101a960048036038101906101a49190610fde565b6104ec565b005b6101c560048036038101906101c09190610fb1565b6105c1565b6040516101d29190610f0c565b60405180910390f35b6101e361060a565b6040516101f09190610dcc565b60405180910390f35b610213600480360381019061020e9190610e87565b61069c565b6040516102209190610ee2565b60405180910390f35b6102316106b3565b60405161023e919061101a565b60405180910390f35b610261600480360381019061025c9190611035565b61075e565b60405161026e9190610f0c565b60405180910390f35b606060018054610286906110a4565b80601f01602080910402602001604051908101604052809291908181526020018280546102b2906110a4565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b60006103163384846107e5565b6001905092915050565b60008054905090565b60008033905061033a8582856109b0565b610345858585610a45565b60019150509392505050565b6000600360149054906101000a900460ff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561041357508073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b801561045257508073ffffffffffffffffffffffffffffffffffffffff166104396106b3565b73ffffffffffffffffffffffffffffffffffffffff1614155b801561049e5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156104e9576000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105be57600360149054906101000a900460ff16600a61055e9190611238565b8165082f79cd90006105709190611283565b61057a9190611283565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060028054610619906110a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610645906110a4565b80156106925780601f1061066757610100808354040283529160200191610692565b820191906000526020600020905b81548152906001019060200180831161067557829003601f168201915b5050505050905090565b60006106a9338484610a45565b6001905092915050565b6000735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1663e6a4390573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2306040518363ffffffff1660e01b81526004016107189291906112dd565b602060405180830381865afa158015610735573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610759919061131b565b905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c906113ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bc9061144c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109a39190610f0c565b60405180910390a3505050565b60006109bc848461075e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a3f5781811015610a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1f906114b8565b60405180910390fd5b610a3e84848484610a3991906114d8565b6107e5565b5b50505050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac39061157e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3390611610565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba3906116a2565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bf791906114d8565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c8591906116c2565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d259190610f0c565b60405180910390a350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d6d578082015181840152602081019050610d52565b83811115610d7c576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d9e82610d33565b610da88185610d3e565b9350610db8818560208601610d4f565b610dc181610d82565b840191505092915050565b60006020820190508181036000830152610de68184610d93565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e1e82610df3565b9050919050565b610e2e81610e13565b8114610e3957600080fd5b50565b600081359050610e4b81610e25565b92915050565b6000819050919050565b610e6481610e51565b8114610e6f57600080fd5b50565b600081359050610e8181610e5b565b92915050565b60008060408385031215610e9e57610e9d610dee565b5b6000610eac85828601610e3c565b9250506020610ebd85828601610e72565b9150509250929050565b60008115159050919050565b610edc81610ec7565b82525050565b6000602082019050610ef76000830184610ed3565b92915050565b610f0681610e51565b82525050565b6000602082019050610f216000830184610efd565b92915050565b600080600060608486031215610f4057610f3f610dee565b5b6000610f4e86828701610e3c565b9350506020610f5f86828701610e3c565b9250506040610f7086828701610e72565b9150509250925092565b600060ff82169050919050565b610f9081610f7a565b82525050565b6000602082019050610fab6000830184610f87565b92915050565b600060208284031215610fc757610fc6610dee565b5b6000610fd584828501610e3c565b91505092915050565b600060208284031215610ff457610ff3610dee565b5b600061100284828501610e72565b91505092915050565b61101481610e13565b82525050565b600060208201905061102f600083018461100b565b92915050565b6000806040838503121561104c5761104b610dee565b5b600061105a85828601610e3c565b925050602061106b85828601610e3c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806110bc57607f821691505b602082108114156110d0576110cf611075565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561115c57808604811115611138576111376110d6565b5b60018516156111475780820291505b808102905061115585611105565b945061111c565b94509492505050565b6000826111755760019050611231565b816111835760009050611231565b816001811461119957600281146111a3576111d2565b6001915050611231565b60ff8411156111b5576111b46110d6565b5b8360020a9150848211156111cc576111cb6110d6565b5b50611231565b5060208310610133831016604e8410600b84101617156112075782820a905083811115611202576112016110d6565b5b611231565b6112148484846001611112565b9250905081840481111561122b5761122a6110d6565b5b81810290505b9392505050565b600061124382610e51565b915061124e83610f7a565b925061127b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611165565b905092915050565b600061128e82610e51565b915061129983610e51565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156112d2576112d16110d6565b5b828202905092915050565b60006040820190506112f2600083018561100b565b6112ff602083018461100b565b9392505050565b60008151905061131581610e25565b92915050565b60006020828403121561133157611330610dee565b5b600061133f84828501611306565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006113a4602483610d3e565b91506113af82611348565b604082019050919050565b600060208201905081810360008301526113d381611397565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611436602283610d3e565b9150611441826113da565b604082019050919050565b6000602082019050818103600083015261146581611429565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006114a2601d83610d3e565b91506114ad8261146c565b602082019050919050565b600060208201905081810360008301526114d181611495565b9050919050565b60006114e382610e51565b91506114ee83610e51565b925082821015611501576115006110d6565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611568602683610d3e565b91506115738261150c565b604082019050919050565b600060208201905081810360008301526115978161155b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006115fa602583610d3e565b91506116058261159e565b604082019050919050565b60006020820190508181036000830152611629816115ed565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061168c602383610d3e565b915061169782611630565b604082019050919050565b600060208201905081810360008301526116bb8161167f565b9050919050565b60006116cd82610e51565b91506116d883610e51565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561170d5761170c6110d6565b5b82820190509291505056fea2646970667358221220e596b473a9b8085b69e7fdb9f6e9bd66e65b659e138eb29c62f1bb0e3335ab4964736f6c634300080c0033000000000000000000000000a37ffb5c9dd7e6a8fbbc559562bbc8953631f6dc